Error类型类的用途是什么:

class Error a where
    noMsg :: a
    strMsg :: String -> a

还有一个名为MonadError的类型类,在单子(monad)计算中很有意义。但是在哪里使用Error?我还没有在任何地方看到noMsgstrMsg的用法。

最佳答案

由于历史原因,Monad m类型类包括fail :: String -> m a。为了使Either e实现这种方法,我们必须有一种将String转换为e的方法;发明了Error类型类,以通过strMsg允许这样做。添加noMsg是一个额外的便利。

10-06 13:29