ちょっとしたことからなんだけど,
お手軽にErlangのシェルで
リストの要素の和をとる関数を
書いて試そうとしたんだけど,
やり方がまったくわからない.
ファイルで関数定義する方法は
腐るほどあるんだけど,
シェルで再帰を書く方法が
簡単に見つけられなかった…
本当はこんな感じで書きたかったんだけど…
1> Sum = fun([H|T]) -> H + Sum(T); ([]) -> 0 end.
するとこんなエラーになる:
* 1: variable 'Sum' is unbound
まあ,当然だわな.
ちなみに2つ目の Sum -> fun に変えても,
* 1: syntax error before: ';'
って怒られてダメ.
で,あきらめかけてたんだけど,
いろいろ探し回ってやっと方法が判明.
1> Sum = fun([H|T]) -> F = fun(G, [X|Y]) -> X + G(G, Y); (G, []) -> 0 end, F(F, [H|T]) end.
これでOK!って,何じゃこりゃ.
シェルだけでプログラムの動作確認は
できないってことか…
普通に再帰で書きたいよ~.