2017-06-20 72 views
0

我正在处理一些Haskell函数的例子但我不明白这个特殊的功能。现在的功能是:你能解释一下Haskell List Comprehension的例子吗?

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

我知道,这是一个列表理解,我也了解到,列表解析的语法是这样的:

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

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

也对不起我的英文。

+2

你试过手动扩展,比如'func [1,3,5]'吗? – leftaroundabout

+0

@leftaroundabout是的,我尝试了各种参数。 –

+2

那你有什么不明白的?对于未来的问题,请说明你如何扩大这个范围,以便发现误解/错误。 – leftaroundabout

回答

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 
相关问题