我明天正在爲測試進行培訓,以完成我對函數式編程的介紹,但有一件事我不明白。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