哈斯克尔采取第一和第七

问题描述 投票:0回答:1

我需要编写给定的至少为7个的元素的列表返回一个包含第一和第七元件的元组在Haskell的函数。

EG

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)

但它说,它具有“非详尽模式”,我不明白

haskell syntax functional-programming pattern-matching non-exhaustive-patterns
1个回答
7
投票
... [a, b, c, d, e, f, g, xs] = ...

是一个相匹配的8个元素一长串图案。 xs名第8元素,而不是列表的其余部分。

如果调用此函数具有6,图7,图9等元素的列表,该模式将不匹配。

... (a: b: c: d: e: f: g: xs) = ...

是一个相匹配元件7或更长的列表模式。 xs名称列表的其余部分它的第一个7个元素之后。有了它,功能仍然无法处理超过7元的任何短名单。

“非面面俱到”的措辞意味着我们的功能不能处理所有可能的情况。

© www.soinside.com 2019 - 2024. All rights reserved.