変数の補足

変数の話で、「らしい」を連発してますが

時給を表す変数を書き換えるだけで良くなる。
と、これだと、定数を定義してるのと変わらないけれども。。
関数型言語での変数は基本、書き換えることが出来ない「らしい」。
1回定義したら、そのまま。
上の例で「wages = 950」を「wages = 1000」に変えているけれども
これは、プログラムの実行中に値を変更しているのではなく
「wages = 1000」として新しいプログラムが作られている「らしい」。
関数型言語では、変数の書き換えを基本的に禁止することで
プログラムの信頼性を上げることが可能「らしい」。

OCamlにおける

# let var = 3 ;;

というのは、変数varに整数型の3というデータを代入してるのではなく
「varという名前(変数)に3という値を結びつける」
ということを指していて、これを「変数の束縛」と言います。
いわゆる「変数という箱に値を入れる」ではなく「値に変数というラベルをつけとく」というイメージでしょうか。

また、

# let var = 3 ;;
# let var = 5 ;;

とすると、varに結びついているのは5になりますが、これは、新しい方の束縛(5)が優先されて古い方(3)が参照できなくなっているということになります。