这是一个返回uniq元素列表的函数:
Prelude> let uniq [] acc = acc
Prelude> uniq (x:xs) acc = if (elem x acc) then (uniq xs acc) else (uniq xs (x:acc))
当我尝试跑步时
uniq [1,2,3] []
我得到了错误
*** Exception: <interactive>:4:1-86: Non-exhaustive patterns in function uniq
我不明白问题出在哪里。检查函数uniq
的类型后,我看到了:
uniq :: Eq a => [a] -> [a] -> p
我希望是这样的
uniq :: Eq a => [a] -> [a] -> [a]
在这种情况下,p
是什么?我不匹配什么?