【问题标题】:Non-exhaustive patterns in function (Haskell) [duplicate]功能中的非详尽模式(Haskell)[重复]
【发布时间】:2018-09-06 05:11:56
【问题描述】:

我有两个抛出相同错误的代码 sn-ps:

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'

以及以下内容:

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

我一定错过了一个模式,但它是什么?另外,我该如何处理这样的错误?在使用模式匹配定义函数时我应该怎么想? (我要求一种方法/技术)

【问题讨论】:

标签: list haskell pattern-matching


【解决方案1】:

要创建具有模式匹配的函数,或者在 ghci 的命令行中使用多行,您应该使用 {} 并在您的情况下使用 ; 分隔:

Prelude> let { sum' [] = 0 ; sum' (x:xs) = x + sum' xs }
Prelude> sum' [1,2,3,4,5]
=> 15

否则,您将只将一个方程式(在本例中为最后一个)绑定到函数名称 sum',这就是您遇到模式匹配失败的原因

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2019-01-25
    • 1970-01-01
    相关资源
    最近更新 更多