【发布时间】:2015-11-29 06:03:11
【问题描述】:
我有一个函数triple_count,它计算 3 个整数的总和。我正在尝试使用此函数构造一个新函数,该函数接受一个整数输入列表并返回一个总和列表。
最初我尝试过:
triples :: [Int] -> [Int]
triples xs
| length xs < 3 = []
| otherwise = triple_count (take 3 xs) : triples (drop 3 xs)
失败是因为三重计数的签名是Int -> Int -> Int -> [Int] 而不是[Int] -> [Int]。
triples :: [Int] -> [Int]
triples xs
| length xs < 3 = []
| otherwise = (triple_count p1 p2 p3) : triples (drop 3 xs)
where params = take 3 xs
p1 = params !! 0
p2 = params !! 1
p3 = params !! 2
除了单独调用它们之外,是否有更好/更通用的方法将列表拆分为单个参数?
【问题讨论】:
标签: haskell