erlang - 列表:地图(列表:总和,[[1,2,3,4],[1,2,3]) 是不允许的。代替 list:sum 一定有乐趣?
问题描述
为什么不允许以下行为:
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]
?
解决方案
@spkhaira 答案是正确的,这个语法决定背后的原因是在 Erlang 函数和变量占用不同的命名空间,它类似于 Lisps 2。这主要是因为两个原因:
- Erlang 是动态类型语言
- Erlang 中的函数由 2 个值定义:它的名称和 arity(参数数量)
使用这两个属性,我们无法推断出您要调用的函数的“版本”,这就是您需要使用/N
. fun
前缀呢?解析器只需要区分erlang:'/'
(又名除法)和/N
用于定义数量的。
推荐阅读
- python - 如果不安全,Torch 将两个具有后备值的张量分开 - 快速
- python - Python:如何定义然后还能够在循环中的标签中获取和设置文本变量
- python - 如何使用子进程捕获 SQLCMD 的 Msg 字符串?
- mongodb - 使用 ip 白名单从 ec2 实例连接到 mongo db
- python - 虽然 True 循环提前中断
- java - 如果当前方法调用出现异常,如何停止后续方法调用的执行
- xcode - 如何使用 Xcode 11 文件模板创建组
- macos - 从 MacOS 访问 Virtual Box 中的 IIS 站点时如何修复 403 Forbidden
- spring-boot - Spring Security Oauth oauth2UserService(在 github 上工作,但在 google 上不工作)
- javascript - 如何使用 Angular 包从扫描仪扫描文档?