blu*_*sky 1 haskell ghci winghci
在ghci中这段代码:
let max [] = error "maximum of empty list"
let max [x] = x
let max (x:xs)
| x > maxTail = x
| otherwise = maxTail
where maxTail = max xs
Run Code Online (Sandbox Code Playgroud)
导致错误: *** Exception: <interactive>:26:5-106: Non-exhaustive patterns in function max
这里有不可耗尽的模式是什么?零元素,单元素和多元素列表可以满足吗?
更新2:
更新3:
在Debian(Raspberry Pi)上按预期工作:
通过使用三个单独的lets,您将定义三个单独的,非详尽的函数max,每个函数都会影响前面的函数.为了定义一个多案例函数使用let,你使用let关键字1,然后只需在每个模式的相同缩进处重复函数签名,如下所示:
let max [] = error "maximum of empty list"
max [x] = x
max (x:xs)
| x > maxTail = x
| otherwise = maxTail
where maxTail = max xs
Run Code Online (Sandbox Code Playgroud)
为了使这个(或任何其他代码占用多行)在GHCI中工作,你需要通过输入:{然后退出它来启动多行模式,:}或者用一行;代替它来代替换行符(除了|你刚才写的|没有;前面或换行符之前).