Hud*_*ith 0 syntax haskell functional-programming pattern-matching non-exhaustive-patterns
我需要在Haskell中编写一个函数,给定一个至少包含7个元素的列表,返回一个包含第一个和第七个元素的元组.
例如
Prelude> take1and7 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
(1, 7)
Run Code Online (Sandbox Code Playgroud)
我试过这个
take1and7 :: [a] -> (a, a)
take1and7 [a, b, c, d, e, f, g, xs] = (a, g)
Run Code Online (Sandbox Code Playgroud)
但它说它有"非详尽的模式",我不明白
... [a, b, c, d, e, f, g, xs] = ...
Run Code Online (Sandbox Code Playgroud)
是一个匹配8个元素长列表的模式.xs命名第8个元素,而不是列表的其余部分.
如果您使用6,7,9等元素列表调用此函数,则模式将不匹配.
... (a: b: c: d: e: f: g: xs) = ...
Run Code Online (Sandbox Code Playgroud)
是一个匹配7个元素或更长元素列表的模式.在其前7个元素之后xs命名列表的其余部分.有了它,该函数仍然无法处理任何短于7个元素的列表.
"非详尽的"措辞意味着我们的功能不能处理所有可能的情况.
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |