で、結局どうなのよ、という話。まあ、いい話も悪い話もあったりするのですが。 値のバグについて追跡が容易 ある変数の値がおかしいとき、一般の言語ではその値の出所(バグコードの場所)を特定することが困難になりがちです。どこで値が再設定されるのか追いきれないからです。しかし再代入不可タイプの関数型言語の場合、その値を設定した箇所は1箇所に特定できます。値がおかしいということは、その式がおかしいのか、その式に含まれている変数の何れかがおかしいのか、どちらかです。 つまり再代入不可である限り、値のバグはコードを追うだけで特定可能です。ステップ実行で追いかけないと見つけられないようなバグにはめったに出くわしません。 並行処理によるスレッドの相互干渉箇所を限定しやすい 「変数の再代入不可」であれば、一旦確定した値の参照は何度でも、たとえ同時に行っても値は同じままです。この特徴はマルチコアにおける並行処理