Haskell无法匹配涉及的预期类型

时间:2015-03-07 03:09:55

标签: haskell

我目前正在学习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

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

maybe_divide中,ab的类型为Maybe Integer ....您无法划分Maybe Integer s

a `div` b --won't work

您需要“展开”Maybe值,在Integer中使用之前提取div。 (有几种方法可以做到这一点,包括模式匹配)。