Erlang : 単一代入の弊害?

http://d.hatena.ne.jp/m-hiyama/20070517/1179360670
これは単一代入のせいではないですよ。
そうではなくて、Erlangの = は代入ではなくてパターンマッチだということからくる問題です。

1> 1 = 1.
1
2> 1 = X.
** 1: variable 'X' is unbound **
3> X = 1.
1
4> 1 = X.
1
5> X = 1.
1
6> X = 2.

=ERROR REPORT==== 19-May-2007::20:59:41 ===
Error in process <0.30.0> with exit value: {{badmatch,2},[{erl_eval,expr,3}]}

** exited: {{badmatch,2},[{erl_eval,expr,3}]} **

他にも、こういうのとか。
http://jijixi.azito.com/cgi-bin/diary/index.rb?date=20070517#p02

      • -

というか、そもそもそう言うのは新しいプロセス作るのですよ。
って、ここ(http://www.jmuk.org/diary/2007/05/18/0)ですでに指摘済みですが。

      • -

ところで、Haskellのletがlet recな件は、Cleanの場合、一意型を扱う都合上

f # s = S.empty
    s = S.insert "jmuk" s
    s = S.insert "m-hiyama" s
  = s

という特殊な記法が追加されています。(S.emptyなんて関数はありませんが)