OCamlでプログラミングを学んでいます(命令)
「表現力と安全にこだわった仕事で使える関数型言語」OCamlによるプログラミング学習の最終回です。テキストは、公式ページのOCamlとの初日です。
内容は、OCamlでの命令型プログラミングについてのまとめですが、また投げ出したので途中までです。
命令または手続き
OCamlは、単なる関数型言語ではなく、命令型のプログラミングにも対応している。
(命令型プログラミングの特徴は、データが変更可能、関数が副作用を持つなどです。OCamlでは変更可能なデータ構造として、参照、配列、変更可能レコードがあります。)
参照
参照は、プログラム全体を通して割当ておよび変更が可能な変数が欲しいときに、用いることができる。
整数についての参照を例に説明する。以下に参照の作成、代入、読み出しを示す。
(参照も一応あるけど、よく使うのはlet…inのほうだ、みたいなことが書いてあるような、ないような。)
順次実行
;により複数の命令型動作を組み合わせることができる。
(関数が副作用を持つ場合、実行される順序が重要になるので、その順序を;で制御します。)
これについて、二つの参照の内容を交換する関数swapを例に説明する。
unit型
前の例に示すように、swapの関数適用による返り値の型は、unit型である。
unit型の値は、ただ一つしかなく、()で表される。
この()は、引数を必要としない関数への形式的な引数として用いられる。その関数は、副作用のためにのみ呼び出される関数であり、例えば、画面出力のための関数print_newlineである。
for
一般的な命令型の繰り返し構造も可能。
forループはこれね!
while
whileループはここ!所与の数以上の2の冪を計算する関数を記述するために使ったよ。
(いや、while構文の説明してよ。「ボクが作った最強関数」の説明してもしかたないでしょ…)
OCamlは、ここまでですね。
まとめ
今回は、OCamlにおける命令型プログラミングについて学びました。
また、後半から説明が雑になって、例示だけで済まそうとするので、もうウンザリです。数表の例も、無駄に大きく10x10で、何がしたいのか理解できません(記事では2x2にしています)。
OCamlの学習で得た成果
ここまでのOCamlの学習を通して、
素人が書いた文章は、出来不出来の波が激しく、内容が独り善がりになりがちだ
ということが分かりました。OCaml関係ないですね。
えっ?私の文章は、海底を這っているので波はありませんよ。それに、 妄想上の読者しかいないので、独り善がりになることもありません。皆さん絶賛してくれます。
今後の方針
言語を選ぶ基準に、
・編集が入っていそうな無料公開されている入門書がある
を入れたいと思います。
また、入門書は、公式ページからのリンクを辿るだけでなく、広くネットから探したいと思います。
次回は、三度の挫折を経た末に奇跡的に出会った入門書が実は 魔導書 で初めて出会った幼なじみとともにオレは異世界に…