你能解释一下这个Haskell列表理解示例的作用吗?

时间:2017-06-20 13:00:01

标签: haskell list-comprehension

我正在处理一些Haskell函数示例但是我并不了解这个特定的函数。现在功能是:

func [n] = n
func (n:ns) = func [n+x|x<-ns]

我知道这是一个列表理解,我还了解到列表推导的语法是这样的:

[return-expression | elem <- collection, predicate]

但我仍然无法确定这个功能是如何工作的,它有什么作用?你能解释一下吗?

也很抱歉我的英语。

1 个答案:

答案 0 :(得分:4)

[n+x|x<-ns]是通过将n添加到ns的每个元素而获得的列表。它相当于map (+n) ns

因此,我们有,例如:

func [a,b,c,d] =
func [a+b,a+c,a+d] =
func [a+b+a+c,a+b+a+d] =
func [a+b+a+c+a+b+a+d] =
a+b+a+c+a+b+a+d