【发布时间】:2021-11-13 06:41:40
【问题描述】:
data CError = EA Int | EB String
deriving (Eq, Show)
type Env = [(VName, Value)]
newtype Test a = Test {runTest :: Env -> (Either CError a, [String]) }
我正在学习haskell,现在正在尝试定义一个monad,但是遇到了这个错误并且找不到修复它的方法。
我的代码如下:
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) -> Left error”这一行显示异常“无法匹配预期类型:(Either CError b, [String]) 与实际类型:Either a0 b1”。有人可以帮我弄这个吗?谢谢
【问题讨论】:
-
你看不懂错误信息或通用代码中的
(Either CError a, [String])?