【发布时间】:2015-04-11 15:53:42
【问题描述】:
我正在尝试实现一个递归函数,该函数从末尾返回 k 的元素。
这是我的尝试:
kElementFromEnd :: Int -> [x] -> x
kElementFromEnd _ [] = error "cannot request k item from empty list"
kElementFromEnd k [x]
| k < 0 = error "k must be non negative"
| k == 0 = last [x]
| otherwise = kElementFromEnd (k-1) (init [x])
这是我收到的错误:
*Main> kElementFromEnd 2 [1,2,3]
*** Exception: EX2.hs:(4,1)-(8,54): Non-exhaustive patterns in function kElementFromEnd
我真的不明白为什么 haskell 不能匹配模式。我不明白发生了什么?
谢谢
【问题讨论】:
-
你可以让这一切变得更简单!
kElemFE n xs = reverse xs !! n
标签: haskell