我目前正在学习Haskell,但我遇到了一个问题,但我并不能真正理解问题所在。当我编译下面的代码时,它告诉我"无法匹配预期的类型'整数'实际类型'可能是整数'"对于17:19行,17:27再次出现相同的错误。
maybe_divide :: Maybe Integer -> Maybe Integer -> Maybe Integer
maybe_divide a b = case valid_div a b of
True -> Just (a `div` b)
False -> Nothing
valid_div :: Maybe Integer -> Maybe Integer -> Bool
valid_div a b
| a == Nothing = False
| b == Nothing = False
| b == Just 0 = False
| otherwise = True
任何帮助将不胜感激。感谢
答案 0 :(得分:1)
在maybe_divide
中,a
和b
的类型为Maybe Integer
....您无法划分Maybe Integer
s
a `div` b --won't work
您需要“展开”Maybe
值,在Integer
中使用之前提取div
。 (有几种方法可以做到这一点,包括模式匹配)。