Error
类型类的用途是什么:
class Error a where
noMsg :: a
strMsg :: String -> a
还有一个名为
MonadError
的类型类,在单子(monad)计算中很有意义。但是在哪里使用Error
?我还没有在任何地方看到noMsg
和strMsg
的用法。 最佳答案
由于历史原因,Monad m
类型类包括fail :: String -> m a
。为了使Either e
实现这种方法,我们必须有一种将String
转换为e
的方法;发明了Error
类型类,以通过strMsg
允许这样做。添加noMsg
是一个额外的便利。