我有一個看起來像這樣的資料型別:
data Vector3 = V Int Int Int deriving (Eq, Show)
我必須撰寫這個函式:
vectorListSum :: [Vector3] -> Vector3
哪個應該對同一索引上的引數求和,所以:
(V1 a1 b1 c1) (V2 a2 b2 c2) => (V3 a1 a2 b1 b2 c1 c2)
依此類推,取決于串列有多少元素
我試過這樣的事情:
vectorListSum :: [Vector3] -> Vector3
vectorListSum [] = V 0 0 0
vectorListSum ((V a b c):xs) = ...
但我不能再進一步了
uj5u.com熱心網友回復:
您可以使用foldror foldl:
vectorListSum :: [Vector3] -> Vector3
vectorListSum = foldr f (V 0 0 0)
where f (V …) (V …) = …
其中f將向量和串列其余部分的“折疊”作為輸入,從而確定整個串列的折疊。我把填寫這些…部分作為練習。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/528505.html
標籤:哈斯克尔
