假設我們有一個列表haskell如何從另一個列表創建一個新列表?
x = [1..10]
,我們打算以這種方式使用它來創建另一個列表Y:
y= [a|a<-x]
因此,儘管從x
創建列表y
,它訪問的x
每個元素(從1到10)並以相同的順序將其插入y
。由於haskell中的列表是單鏈表,我們只能在它的頭部插入一個新元素。所以首先插入1到[]
&我們有[1]
。然後它插入2到它的頭&,所以我們有[2,1]
。然後它插入3 &我們有[3,2,1]
&等等。所以最終我們應該得到y
作爲[10,9..1]
。但相反,我們得到y
爲[1..10]
。爲什麼?
這是一個很好的解釋如何desugar list comprehension語法:http://stackoverflow.com/a/8029698/1013393 – sjakobi