我明天正在为测试进行培训,以完成我对函数式编程的介绍,但有一件事我不明白。Haskell:非详尽模式
每当我有这样一个程序:
test [] = []
test (x:xs) = test (xs)
他所做的是,他采取的第一个元素淘汰之列,并与其余部分继续。每当只剩下一个时,xs
应该是[]
,而这又应该触发test [] = []
。但是每当我运行这个算法,我得到一个错误。 Exception: <interactive>:20:5-16: Non-exhaustive patterns in function test.
我在网上找不到明确的解释。有人可以给我一个链接,这是明确解释或解释给我?
奇怪。您发布的代码段不包含非穷举模式。 – pyon 2014-09-26 07:22:18
只是在黑暗中拍摄:你可能试图将这个定义输入到ghci中吗?如果是这样,你应该使用一个let语句:'let test [] = [];测试(x:xs)=测试xs'。 – pyon 2014-09-26 07:24:29
是的,这就是我正在做的。非常感谢。我已经开始吓坏了,因为我花了整整一周的时间编程递归,但我无法弄清楚为什么这个工作不起作用。 – 2014-09-26 07:28:46