Erlang:为什么这会以'badarith'异常失败?

gri*_*ton 16 erlang closures

是否可以在Erlang中实现闭包?

例如,我如何从Scheme翻译此片段?

(define (make-adder n)
  (lamdba (x) (+ x n)))
Run Code Online (Sandbox Code Playgroud)

我试过以下,但我显然遗漏了一些东西.

make_adder(n) ->
    fun (x) -> x + n end.
Run Code Online (Sandbox Code Playgroud)

编译它会产生错误

Warning: this expression will fail with a 'badarith' exception
Run Code Online (Sandbox Code Playgroud)

sep*_*p2k 26

你不能添加原子.变量从erlang中的Capital Letters开始.以小写字母开头的单词是原子.

换句话说,您的问题与funs 无关,您只需要将变量名称大写.

  • 我确认一位初学者确实得到了帮助.谢谢 :-) (3认同)
  • 留下问题并将标题更改为“为什么我会得到“此表达式将因 'badarith' 异常而失败”?或类似的规定。这样所有其他会犯这个错误的 erlang 初学者(我知道我犯了)在搜索消息时很容易找到它。 (2认同)