Erlang,列表理解语法

时间:2009-02-11 00:51:40

标签: list erlang list-comprehension

我在Erlang中看到了这段代码:

[X-$0 || X<-someFun()]

在该行中,我发现-$0语法非常有用。

我阅读了代码并估计了它的含义,但我不太确定:是否将所有数字分开?

我想查看该语法的解释或手册页,但我找不到它。有人能给我看正确的页面吗?

2 个答案:

答案 0 :(得分:17)

该代码正在做的是从someFun()获取输出(需要返回一个列表),对于列表中的每个元素,它将元素的值赋给变量X然后从该值中减去字符0的ASCII值。结果列表就是整个表达式的值。

它在做什么,在实践中(我自己编写过这几段代码),假设someFun/0是一个函数,它返回一个只包含数字的字符串,然后将该字符串转换为一个数字列表。因此,如果someFun()返回“12345”,则此列表理解的结果为[1, 2, 3, 4, 5]

如果你熟悉map函数的概念(如MapReduce),那么现在听起来应该很熟悉了。

这个wikibooks页面看起来像是对Erlang列表推导的一个很好的介绍:

http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions

Joe Armstrong的书“Programming Erlang”,来自Pragmatic Bookshelf,(http://pragprog.com/titles/jaerlang/programming-erlang)也很好地涵盖了列表理解(以及Erlang相关的所有其他内容)。优秀的书,强烈推荐等。

答案 1 :(得分:1)

列表推导的常规文档页面位于Erlang Reference Manual第6.22节和Programming Examples第3节中。

这两个都在main documentation page上(点击左侧菜单栏上的Erlang编程文件夹)。

Erlang文档是fab - 它只是它的布局有点笨拙......