OCamlで変数の内容を書き換える
OCamlでは、変数に値を代入した時点で束縛されてしまうため、変数の内容を書き換える事ができません。しかし、関数型プログラミングに慣れてない人間にとって変数の値を書き換えられないのは辛いです。
そんな時はRef型(参照型)を利用すると、後からでも変数の値を書き換えることができるようになります。
let a = ref 0;; (* a = 0 *) a = (!a) + 1;; (* a = 1 *)
値を代入する前にrefと書きましょう。するとそれ以降は通常の変数のように値を代入でき、!変数名で変数の値を取り出すことができます。上のように書けばaの値をインクリメントしていけるということ。また、数値以外も参照型で利用できますが、始めに代入した型以外の型を後から代入することはできません。
このような書き方をしないで済むプログラミングをできるようになりたいところではあります。