问题描述
我收到此代码的解析错误,但不确定原因,请帮助。我对 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 of
语法与保护语法混为一谈。
使用 case of
时,您不必“保护”布尔表达式;你匹配模式:
intDiv a b = case a b of
0 -> Just 1
_ -> Nothing
这个函数没有多大意义,但它可以编译。
如果你想保护布尔表达式,你也可以这样做,但语法不同:
intDiv a b | b == 0 = Just 1
intDiv _ _ = Nothing
这个变体也可以编译。
请注意,这两个变体不等价,因为它们没有相同的(推断)类型。