【发布时间】:2021-12-09 07:29:59
【问题描述】:
实现返回对列表的
oddPairs :: [Int] -> [Int] -> [(Int, Int)]函数,但前提是参数列表各自元素的总和为奇数。例如:
oddPairs [1,2,3] [2,2,2] == [(1,2),(3,2)]
oddPairs [1,3,5] [2,4,6] == zip [1,3,5] [2,4,6]
oddPairs [1,2,3] [1,2,3] == []
到目前为止,我已经尝试过
oddPairs (x:xs) (y:ys) | (x+y) `mod` 2 == 0 = []
| (x+y) `mod` 2 /= 0 = [(x, y)] ++ oddPairs (xs) (ys)
在第一个示例中,它仅返回 [(1,2)],在第二个示例中,它返回正确的值,但出现 Non-exhaustive patterns 错误。
【问题讨论】:
-
顺便说一下,Prelude 包括
even :: Integral a => a -> Bool,使用mod和(==)实现,正如您在此处所做的那样。