見出し画像

OCamlでプログラミングを学んでいます(型)

 「表現力と安全にこだわった仕事で使える関数型言語」OCamlによるプログラミング学習の第3回です。テキストは、公式ページの今日からOCamlです。
 内容は、型についてのまとめです。

基本型

 OCamlの基本型は、以下の通りである。
  名前       範囲
・int         63bit 符号付き整数(64bitプロセッサ)/ 31bit符号付き整数(32bitプロセッサ)
・float      IEEE倍精度浮動小数点
・bool      'true'と'false'
・char      8bitの文字
・string    文字列(文字の列)

 文字列(string型の値)は、文字(char型の値)のリストではなく、独自の内部表現を持っている。文字列は不変である。
 (英語だと、型の名前stringと、その値の一般名称stringが同じなのでややこしいです。chaîne de caractèresだと問題ないのかもしれませんが。)

表示例

 トップレベル(対話式実行環境)で式を打ち込むと、その型がOCamlにより表示される。

# 0;;
- : int = 0
# 0.0;;
- : float = 0.
# false;;
- : bool = false
# "False";;
- : string = "False"

 上記のように、各式はただ一つの型を有する。

関数型

 ほとんどの場合において、関数の型はOCamlにより導き出されるため、明示する必要がない。関数の型の構文は、例えば、引数1, … 引数nをとってrettype型の値を返す関数fでは、

f: 引数1 -> 引数2 -> ... -> 引数n -> rettype

となる。
 (矢印の並び、つまりカリー化についての説明は、もっと後になるそうです。そんなものはありませんでした。)

 平均を求める関数averageは、二つ浮動小数点を引数にとって一つの浮動小数点を返す関数であり、その型は、

# let average = fun a b -> (a+.b)/.2.0;;
val average : float -> float -> float = <fun>

となる。

突然だが、ここで、OCamlの特徴を紹介しよう!

  • OCamlは、静的に強く型付けされた言語だ!つまり、式の型は実行前に決定され、その型はただ一つしかないぞ!

  • OCamlは、型を導き出すために型推論をしてくれるのだ!だからプログラマーがやる必要はないぞ!さらに、トップレベルだと、うるさい母親のように毎回表示してくれるぞ!

  • OCamlは、お前のママみたいに勝手に型変換しれくれないぞ!やりたときは、自分でやるのだ!OCamlでは、型推論の副次的な効果でオーバーロードができ…ない…ぞ…

 (いきなり何なのでしょう?)


まとめ

 今回は、型について学びました。これまでの説明の繰り返しと、表示形式についての説明だけだったので理解は容易かったです。
 しかし、期待していた「型とは何か」といった説明がなかったので、消化不良です。入門向けでは、この程度で十分なのでしょう。
 次回は、パターンマッチングについて学ぶ予定です。
 ※ 前回の終わりにもう辞めるみたいなことを書きましたが、ゾーイ(シーモアだっけ?)が云うように死にかけのお婆さんのために、もう少しだけ記事を書いてみることにしました。


古往今来得ざれば即ち書き得れば即ち飽くは筆の常也。と云うわけで御座います、この浅ましき乞食めに何卒皆々様のご慈悲をお願い致します。