【发布时间】:2016-08-11 13:07:37
【问题描述】:
我正在使用 ghci。我有一个简单的函数,可以将列表中的每个元素加倍。当我尝试模式匹配时,它将列表中的元素加倍,但最终失败并出现以下错误:
*Main> let double [] = []
*Main> let double (x:xs) = (2*x) : double xs
*Main> double [10,2,0,5]
[20,4,0,10*** Exception: <interactive>:52:5-37: Non-exhaustive patterns in function double
我得到了与守卫和模式相同的功能。不知道单独使用模式时我做错了什么。请指教。
*Main> let double (x:xs) | null xs = [2* x] | otherwise = (2*x) : (double xs)
*Main> double [10,2,0,5]
[20,4,0,10]
【问题讨论】:
-
第二个
let覆盖第一个。