Haskell monad:无法匹配预期类型:(CError a,[字符串])与实际类型:a0 b0


data CError = EA Int | EB String
deriving (Eq, Show)
type Env = [(VName, Value)]
newtype Test a = Test {runTest :: Env -> (Either CError a, [String]) }

我正在学习haskell,现在试图定义一个单子,但遇到这个错误,找不到解决它的方法。

我的代码如下:

instance Monad Test where
return a = Test $ e -> (Right a, mempty)

m >>= f = Test $ env -> case runTest m env of
(Right a, s) -> runTest (f a) env
(Left error) -> Left error

目前,这一行"(Left error) ->左error"显示一个异常"无法匹配预期类型:(要么error b, [String])与实际类型:要么a0 b1"。有人能帮我一下吗?谢谢你

类型(Either CError a, [String])不包含任何形式Left err的值;你可能指的是(Left err, s)

相关内容

最新更新