2017-06-20 74 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 
相關問題