foldl (flip (:) ) [] [2,4,6]
我在以下步驟中對此進行解釋:
我認為第一步是翻轉 (:) [] [2,4,6]
這兩個串列變成 [2,4,6] []
我相信下一步是 foldl [2,4,6] []
這兩個串列合并為 [2,4,6] 以及我得出的最終答案
但答案是 [6,4,2],我需要幫助了解該程序如何達到 [6,4,2]
uj5u.com熱心網友回復:
foldl f a [] = a
foldl f a (x:xs) = foldl f (f a x) xs
-- Therefore
foldl (flip (:)) [] [2,4,6]
= foldl (flip (:)) (flip (:) [] 2) [4,6]
= foldl (flip (:)) ((:) 2 []) [4,6]
= foldl (flip (:)) [2] [4,6]
= foldl (flip (:)) (flip (:) [2] 4) [6]
= foldl (flip (:)) ((:) 4 [2]) [6]
= foldl (flip (:)) [4,2] [6]
= foldl (flip (:)) (flip (:) [4,2] 6) []
= foldl (flip (:)) ((:) 6 [4,2]) []
= foldl (flip (:)) [6,4,2] []
= [6,4,2]
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/517145.html
標籤:哈斯克尔折叠翻动
