首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >列表:不允许映射(列表:sum,[1,2,3,4],[1,2,3])。而不是列表:sum一定有乐趣吗?

列表:不允许映射(列表:sum,[1,2,3,4],[1,2,3])。而不是列表:sum一定有乐趣吗?
EN

Stack Overflow用户
提问于 2018-12-30 23:55:31
回答 2查看 71关注 0票数 3

为什么不允许执行以下操作:

代码语言:javascript
复制
156> lists:map(lists:sum,[[1,2,3,4],[1,2,3]).                       
* 1: illegal expression

,当我在lists:sum周围开个玩笑时,这是允许的:

代码语言:javascript
复制
162> lists:map(fun (L)->lists:sum(L)end,[[1,2,3,4],[1,2,3]]).
[10,6]
EN

回答 2

Stack Overflow用户

发布于 2018-12-31 08:36:57

@spkhaira answer是正确的,这个语法决定背后的原因是,在Erlang函数和变量占用不同的名称空间,它类似于Lisp2。这主要是因为两个原因:

Erlang是动态类型的,Erlang中的language

  • Functions由两个值定义:它的名称和(参数数量)

有了这两个属性,我们不能推断出你想要调用的函数的“版本”,这就是为什么你需要使用/N。那么fun前缀呢?解析器只需要区分erlang:'/' (又称除法)和用于定义and的/N

票数 4
EN

Stack Overflow用户

发布于 2018-12-31 02:01:29

试试这个-

代码语言:javascript
复制
lists:map(fun lists:sum/1,[[1,2,3,4],[1,2,3]]).
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53979097

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档