所以,已经有几个月了,我有点生疏,但我似乎记得Either b是一个Monad
Prelude Control.Monad Data.Either> return "Hello" :: Either String String
<interactive>:0:1:
No instance for (Monad (Either String))
arising from a use of `return'
Possible fix:
add an instance declaration for (Monad (Either String))
In the expression: return "Hello" :: Either String String
In an equation for `it':
it = return "Hello" :: Either String String
Prelude> Right "Hi" == return "Hi"
<interactive>:0:15:
No instance for (Monad (Either a0))
arising from a use of `return'
Possible fix: add an instance declaration for (Monad (Either a0))
In the second argument of `(==)', namely `return "Hi"'
In the expression: Right "Hi" == return "Hi"
In an equation for `it': it = Right "Hi" == return "Hi"
Run Code Online (Sandbox Code Playgroud)
所以我可能做错了什么,但我不确定是什么.我正在使用GHC 7.2.2.
Dan*_*her 11
截止日期base-4.6.0.0,Monad和Functor实例Either e定义Data.Either并自动从中获取Prelude.
以前,在... base-4.3.*中base-4.5*,实例已定义,Control.Monad.Instances并且不会自动可用.在此之前,部分与之同时,有一个
instance Error e => Monad (Either e) where
...
Run Code Online (Sandbox Code Playgroud)
中所定义Control.Monad.Error的mtl-1.*,并且在Control.Monad.Trans.Error从所述transformers包.Error如果它们与a一起使用,这些模块仍然有条件地提供实例(现在没有约束)base < 4.3.
| 归档时间: |
|
| 查看次数: |
304 次 |
| 最近记录: |