我已經定義了以下功能找到的東西列表的倒數第二個元素(智力,串...)函數定義的問題(沒有實例......從產生)
myButLast :: [a] -> a
myButLast [] = error "myButLast: empty list"
myButLast [x, _] = x
myButLast (_:xs) = myButLast xs
當我與測試hspec
it "returns an error for list of one element" $ do
myButLast [42] `shouldThrow` anyException
我收到以下錯誤
沒有實例(NUM(IO A0)) 從精簡版出現拉爾
42' Possible fix: add an instance declaration for (Num (IO a0)) In the expression: 42 In the first argument of
myButLast '即[42]' In the first argument of
shouldThrow',即'myButLast [42]」
是什麼意思,以及如何解決它?可能是需要類的約束?
我想處理myButLast中的任何字符串和列表。我所有其他測試與多元素的作品。
'myButLast [x,_] = x'與一個具有兩個元素的列表匹配。如果你想匹配一個列表與一個元素:'myButLast [x] = x'或'myButLast(x:[])= x' – user2407038