2009-09-19 22 views
15

Erlangでクロージャを実装することは可能ですか?Erlang:なぜこれは 'badarith'例外で失敗しますか?

たとえば、このスニペットをSchemeからどのように変換すればよいですか?

(define (make-adder n) 
    (lamdba (x) (+ x n))) 

私は以下を試しましたが、明らかに何か不足しています。これをコンパイル

make_adder(n) -> 
    fun (x) -> x + n end. 

はあなたが原子を追加することはできませんエラー

Warning: this expression will fail with a 'badarith' exception 
+1

みんな、なぜこれがupvotedですか?私の質問がどれほど切ないか恥ずかしいです! – grifaton

答えて

25

を与えます。変数はerlangの大文字で始まります。小文字で始まる単語は原子です。

つまり、問題はfunとは関係ありません。変数名を大文字にするだけです。

+0

ありがとう!私は質問を削除して寝るよ! – grifaton

+1

質問を削除できません...ただ寝るだけです。 – grifaton

+1

質問を残して、タイトルを「なぜ取得するのですか」に変更します。この表現は「badarith」例外「?」で失敗します。それらの行に沿った何か。そうすれば、この誤解を起こす他のすべての初心者(私がやったことを知っている)は、メッセージを探しているときにそれを簡単に見つけることができます。 – sepp2k

3
make_adder(N) -> 
    fun (X) -> X + N end. 
0

変数は、大文字Erlangでで始まります。 小文字で始まる単語はアトムです。

関連する問題