Erlang:为什么这个失败了,出现了一个“badarith”异常?

2cmtqfgy  于 2022-12-08  发布在  Erlang
关注(0)|答案(3)|浏览(199)

是否可以在Erlang中实现闭包?
例如,如何翻译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
pkbketx9

pkbketx91#

您不能添加原子。在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。
换句话说,您的问题与fun s完全无关,您只需要将变量名大写即可。

hlswsv35

hlswsv352#

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

3mpgtkmj3#

在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。

相关问题