「変数の初期化」「変数の再代入禁止」
プログラミング言語のHaskellを説明するとき,説明の相手がCプログラマであれば,その人が知っているであろう概念を使って説明する方がわかりやすい.と考える心情はわからないわけではない.
などという説明を見ることがある.この説明はHaskellプログラムのある一面を描写していて,いくつかの前提を明示すれば,まちがいではないように思えるし,許容できる説明だとも思えなくもなかった.しかし,今は寛容の心が持てないジジイになってしまった.Haskellにはアドレス空間あるいは値の記憶場所という概念はなく.代入(assignment)の概念もなければ初期化の概念もない.
x = 4200 * 1.05
= は代入(assignment)ではなく,束縛(binding)である.すなわち右辺の式が表す値で左辺の変数を束縛するのである.この場合は変数 x を式 4200 * 1.05 が表す値で束縛するのである.最初の2つの説明は,
とすべきであると頑なに思うようになってしまった.