OCamlをつつく13-for文。お勧めしないけど繰り返せるピヨ。
for i = 1 to 10 do print_string "Piyo " done;;
このサンプルプログラムを実行すると10回ピヨと言うピヨ♪OCamlはシンプルだねー。OCamlのfor文は次の様に定義されているんだ。
for 変数名 = int型の式 ( to もしくは downto ) int型の式 do 式 done
分かってもらえると思うけど、こんな風に書いている部分は任意の項目ピヨ。この定義をみたら色々なOCamlらしさがあるピヨ。1つ目にint型に固定されているのが気になるよね?じゃあ、試しに変数の値をflot型にしてみるピヨッ♪
for i = 1.0 to 10.0 do print_string "Piyo " done;;
実行してみて。やっぱりシンタックスエラーが出るピヨ。やっぱりint型でないと駄目なんだね。
次に気になるのは、toとdowntoの違いピヨ。試しに二つのサンプルをつついてみたピヨ。
for i = 1 to 10 do
print_int i;
print_string " "
done;;
for i = 10 downto 1 do
print_int i;
print_string " "
done;;
これでバッチリだよね♪式が複数行の時;をつける事に注意が必要ピヨ。
おっと忘れるところだった。それ以外にもう一つ分かり難い落とし穴があるピヨ。それは・・・
for i = 1 to 10 do
i > 10
done;;
このサンプルを実行してごらん。シンタックスエラーでuntilとか何とか言われたよね?これは、for文の式はunit型を返す式以外は禁止されているからなんだ。これはつまり、unitというのは戻り値が何もない事をあらわしているから、for文の中で値を返しちゃ駄目!という事なんだ。OCamlのfor文は制約が多いピヨォ。でもこれは弱点とかじゃなくて、関数型言語のプログラミングは繰り返し文はあまり使わないからその様に設計したとボクは思う。
この様にfor文は使いにくいから、OCamlでは他のプログラミング言語で馴れたスタイルから関数型を使用するスタイルに切り替えよう♪OCamlは上手い事出来ているね♪