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なんて関数はありませんが)