表達iterate (1+) 1
計算結果爲[1, 2, 3, ...]
如何使用的元組
我可以這樣做iterate ((1+) (1+)) (1, 1)
,所以我可以[(1, 1), (2, 2), ... ]
?如果是,那麼語法是什麼?
表達iterate (1+) 1
計算結果爲[1, 2, 3, ...]
如何使用的元組
我可以這樣做iterate ((1+) (1+)) (1, 1)
,所以我可以[(1, 1), (2, 2), ... ]
?如果是,那麼語法是什麼?
這句法應該很好地工作:
iterate (\(x,y) -> (x+1, y+1)) (1, 1)
也有許多其他方法對皮膚這隻貓:
iterate (bimap (1+) (1+)) (1, 1)
iterate ((1+) *** (1+)) (1, 1)
map (\x -> (x,x)) $ iterate (1+) 1
join (,) <$> iterate (1+) 1
[(x, x) | x <- [1..]]
...等等。
在Daniel Wagner的答案上展開 - Data.List
的iterate
將函數作爲第一個參數。的iterate
類型簽名是
(a -> a) -> a -> [a]
這意味着在第一個參數的函數只是有它攝取返回相同的類型。這可以是一個匿名函數,如Daniel的答案或函數名稱所示。例如;他的例子可以使用像這樣命名的函數來重寫:
import Data.List (iterate)
addOne (x, y) = (x + 1, y + 1)
iterate addOne (1, 1)
謝謝:)這正是我一直在尋找 –