7
我讀西蒙·湯普森的的Haskell:函數式編程的工藝,我想知道是如何工作的:Haskell函數如何使用列表理解工作計算排列?
perms [] = [[]]
perms xs = [ x:ps | x <- xs , ps <- perms (xs\\[x]) ]
我似乎無法把握perms(xs\\[x])
應如何發揮作用。兩個元素的列表的跟蹤顯示:
perms [2,3]
[ x:ps | x <- [2,3] , ps <- perms ([2,3] \\ [x]) ] exe.1
[ 2:ps | ps <- perms [3] ] ++ [ 3:ps | ps <- perms [2] ] exe.2
...
如何從exe.1
去exe.2
?
爲什麼downvote? – 2010-08-07 22:21:26
你知道嗎,我是個白癡。這是我見過的關於列表理解的第一個跟蹤。跟蹤顯示列表中的所有元素一次創建一個。我不知道爲什麼我認爲第三行是要創建的列表的第二個元素。 – 2010-08-07 22:46:57