【发布时间】:2019-02-04 15:07:00
【问题描述】:
我需要在 Haskell 中编写一个函数,给定一个至少包含 7 个元素的列表,返回一个包含第一个和第七个元素的元组。
例如
Prelude> take1and7 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
(1, 7)
我试过了
take1and7 :: [a] -> (a, a)
take1and7 [a, b, c, d, e, f, g, xs] = (a, g)
但它说它具有我不理解的“非详尽模式”
【问题讨论】:
-
你想要
take1and7 (a:b:c:d:e:f:g:xs) = (a, g)。 (如果需要,我很乐意进一步解释,但自从我开始输入此内容后,我发现答案已经上升了 :)) -
你必须使用模式匹配吗?一个更容易阅读的实现是使用
!!
标签: haskell syntax functional-programming pattern-matching non-exhaustive-patterns