変数束縛

変数束縛なんて言葉が本当にあるのかは知りません適当につけました…
兎も角。「let name = val」でnameにvalを束縛するらしいです。

# let x = 1;;
val x : int = 1

下の謎の出力は「xにint型の1を束縛したよ!」という意味なんだと勝手に解釈。もしかしたら「int型のxに1を束縛したよ!」かもしれませんが、まあ細かいことを気にしていては大人になれません。
色々試してみる。とりあえず文字列リテラルはきっと"hoge"だろう。

# let hoge = "hoge";;
val hoge : string = "hoge"

あたり。折角なので参照してみる。

# print_endline hoge;;
hoge
- : unit = ()

ところでOCamlでは型推論が頑張っているので、今まで明示的に型を書かなくてもちゃんと動いてくれてましたが、明示的に書く事もできるらしいです。でもめんどくさいですね。

# let x : float = 1.4;;
val x : float = 1.4

当然違う型の値を束縛しようとすると叱られます。

# let x : float = 1;;
Characters 16-17:
  let x : float = 12;;
                  ^^
This expression has type int but is here used with type float

わざわざおかしいところを教えてくれるなんて、なかなかOCamlも太っ腹です。
英語読むのだるいけどよくできている!気に入りました!