occ*_*lti 2 haskell list pattern-matching
我有两个代码片段引发相同的错误:
Prelude> sum' [] = 0
Prelude> sum' (x:xs) = x + sum' xs
Prelude> sum' [1,2,3,4,5]
*** Exception: <interactive>:142:1-25: Non-exhaustive patterns in function sum'
Run Code Online (Sandbox Code Playgroud)
以及以下内容:
Prelude> prod [] = 1
Prelude> prod (x:xs) = x * (prod xs)
Prelude> prod [1,2,3,4,5]
*** Exception: <interactive>:139:1-27: Non-exhaustive patterns in function prod
Run Code Online (Sandbox Code Playgroud)
我肯定错过了一个模式,但它是什么?另外,出现这样的错误我该怎么办?使用模式匹配定义函数时我应该如何思考?(我要求一种方法/技术)
要创建具有模式匹配的函数,或在 ghci 命令行中使用多行,您应该在您的情况下使用{}并分隔;:
Prelude> let { sum' [] = 0 ; sum' (x:xs) = x + sum' xs }
Prelude> sum' [1,2,3,4,5]
=> 15
Run Code Online (Sandbox Code Playgroud)
否则,您将仅将一个方程(在本例中是最后一个方程)绑定到函数名称sum',这就是模式匹配失败的原因
| 归档时间: |
|
| 查看次数: |
1434 次 |
| 最近记录: |