【问题标题】:Parse error in a case expression - haskell案例表达式中的解析错误 - haskell
【发布时间】:2021-03-27 03:25:02
【问题描述】:

我收到此代码的解析错误,不知道为什么,请帮忙。我对haskell也很陌生,所以请原谅这个非常简单的问题。

intDiv a b = case a b of 
    b==0 -> Just(1)
    _ -> Nothing

错误信息是:

Q66827743.hs:4:5: error: Parse error in pattern: b == 0
  |
4 |     b==0 -> Just(1)
  |     ^^^^

【问题讨论】:

  • case a b of 表示“调用函数a,参数b,然后检查结果”。我想这不是你想要的。

标签: haskell case parse-error


【解决方案1】:

您似乎将case of 语法与保护语法混为一谈。

当使用case of 时,您不会“保护”布尔表达式;你匹配模式:

intDiv a b = case a b of 
    0 -> Just 1
    _ -> Nothing

这个函数没有多大意义,但它可以编译。

如果你想保护布尔表达式,你也可以这样做,但语法不同:

intDiv a b | b == 0 = Just 1
intDiv _ _ = Nothing

这个变体也可以编译。

请注意,这两个变体等效,因为它们没有相同的(推断的)类型。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-23
    • 2013-01-29
    • 1970-01-01
    • 2010-12-06
    • 2017-07-18
    • 2015-03-14
    相关资源
    最近更新 更多