なんじゃこりゃぁー!

まあ、最初にわけがわからなくなるのが、代入?です。

最初に、変数X*1に10を代入します。

X = 10.

インタプリタで実行します。

続けて、

X = 4.

と入力するとエラーが出るそうです。なんで?

そういえば、どこかのページに、Erlangの変数は、

const int X = 10;

と同じようなイメージだと書いてありましたが、最初の代入(X = 10.)は、「物理アドレス上にストアされた10という数字に変数Xを結び付ける(束縛する)という操作なんだそうです。

そんでもって、一度、変数に(ポインタ?の)代入(でなくて束縛)をすると、二度とその値は変更できないんだそうです。

なにそれ?

そんでもって、二回目の代入(ではないのですが)(X = 4.)はまた意味が違って、「Xに結び付けられている数値と4は等価であると評価できるか?」という意味なんだそうです。

ですから、

X = 4 + 6.

は、(4+6)をXに代入するのではなく、Xに束縛された値と(4+6)の結果は同等であると見なせるか?
という意味なんだそうです。

#むしろ、数学の等号に近いですね。考え方としては。

ですから、Xという文字をみて、「Xは変数だろ?」とか、=という記号を見て、「当然、代入でしょ?」と思うと全然違うわけです。

#まあ、ここに効率よく、堅牢なプログラミングを可能にするための
#コアとなるコンセプトのようです。読み進めてみるとわかるんですけど。

*1:変数の最初の文字は大文字じゃなきゃだめなんだそうです。