为什么不允许执行以下操作:
156> lists:map(lists:sum,[[1,2,3,4],[1,2,3]).
* 1: illegal expression,当我在lists:sum周围开个玩笑时,这是允许的:
162> lists:map(fun (L)->lists:sum(L)end,[[1,2,3,4],[1,2,3]]).
[10,6]发布于 2018-12-31 08:36:57
@spkhaira answer是正确的,这个语法决定背后的原因是,在Erlang函数和变量占用不同的名称空间,它类似于Lisp2。这主要是因为两个原因:
Erlang是动态类型的,Erlang中的language
有了这两个属性,我们不能推断出你想要调用的函数的“版本”,这就是为什么你需要使用/N。那么fun前缀呢?解析器只需要区分erlang:'/' (又称除法)和用于定义and的/N。
发布于 2018-12-31 02:01:29
试试这个-
lists:map(fun lists:sum/1,[[1,2,3,4],[1,2,3]]).https://stackoverflow.com/questions/53979097
复制相似问题