束縛という語の使い方について

「ふつうのHaskellプログラミング」本の32ページで

この「束縛する」という単語は使い方を間違いやすいので注意してください。「変数を値に束縛する」のであって、「変数が値を束縛する」のではありません。変数は束縛される側です。

という段落があった。

これは感覚的にマッチさせるとしたら、ラベル(変数)をもの(値)に貼り付ける、程度でいいだろう。bindにちなんで、シールを使わずに名札は紐でくるくる縛り付ける感がいいかも。

ただやっぱり、この「変数を値に束縛する」は何が変な感じがする。なぜなのかというと、「束縛」ってのもあれだけど、やっぱり「変数」のイメージなんだろうなあと思う。

倉庫みたいな感じで、どこかに変数(という棚)がいっぱいあって、そこに値をくっつける感じもしなくもない。変数(自体)をものとして意識すると、中に入るであろう値のほうがころころ変わるものとして見えてもおかしくはない。いわゆる変数=メモリのイメージだ。もともとの変数というものはそういうものだ。Haskell(やほとんどの最近のプログラミング言語)ではそうではなく、「変数」っぽくつかわれるものは値に対してつけた名簿上の名前に過ぎない。

ただ、プログラミング言語では、実際はそういう仕組みを持たない言語であっても、使われ方から、過去の言語の用語を継承する傾向が多々ある。「変数」もそのひとつだろう。