val pi=3.14 は、いわゆる、変数への代入ではない。
MLでは、static bindingといって、piという変数に3.14という値をbind
結びつけている。
MLは、一度、bindするとその値は変わることがない。
しかし、
val pi=0.0;
とすると、piは0.0と評価される。
実は、piの再定義によって、古いpiのbindingがきえたわけではなく、隠されただけという。
例えば、
val pi=3.14;
val area=pi*3.0*3.0; (-> 28.26)
val pi=0.0;
area; (-> 28.26)(0とはならない)
変数名とそれにbindされている値の組み合わせの集合を環境(environment)という。
areaの環境ではpi=3.14であり、その外でpiの値を再定義しても、
areaの環境には影響がない。static binding
関数の場合も同様である。
val y=20;
fun f x = x + y;
f 3 ; (->23)
val y =99;
f 3 ;(->23)(102とはならない)
最終更新:2007年03月06日 23:48