なんじゃこりゃぁー!
まあ、最初にわけがわからなくなるのが、代入?です。
最初に、変数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:変数の最初の文字は大文字じゃなきゃだめなんだそうです。