イミュータブルな言語

http://www.rubyist.net/~matz/20080320.html#p03
を読んで思った。
Erlangの特徴が、immutableな値とアクターモデルだというのは、
とても頷ける。
もうひとつ本質的ではないかもしれないけれど、
パターンマッチングの仕組みが組み込みであるのも特徴だとおもう。
他の言語と比べたときに、とくに特徴にはならないかもしれないが、
=が代入でなくてパターンマッチングで、アクターに送られるメッセージ
もこのパターンマッチで選り分けられる。
Clojureは、
immutableな値に、アクターとパターンマッチはなくて、STMと、
動的に定義できる、他のスレッドから参照できるグローバル変数がある。
これをグローバル変数と言ってよいのか、スペシャル変数、ダイナミック変数、
なんというべきかはもう少し調べないといけないけれど、
動的に設定できてどのスレッドからも見える名前空間がある
というのが、ずいぶんClojureを窮屈でないものにするのに貢献していると思う。
もう一つ、イミュータブルなハッシュマップやセット/集合型というのも
便利だし。

また後でもう少し考えてみたい。