是否可以在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
pkbketx91#
您不能添加原子。在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。换句话说,您的问题与fun s完全无关,您只需要将变量名大写即可。
fun
hlswsv352#
make_adder(N) -> fun (X) -> X + N end.
3mpgtkmj3#
在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。
3条答案
按热度按时间pkbketx91#
您不能添加原子。在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。
换句话说,您的问题与
fun
s完全无关,您只需要将变量名大写即可。hlswsv352#
3mpgtkmj3#
在Erlang中,变量以大写字母开头。以小写字母开头的单词是原子。