fail
Monad中的方法被一些人认为是一个坑;这是对类的任意添加,而不是来自原始的范畴理论。当然,在当前的情况下,许多Monad类型具有逻辑和有用性fail
实例。
MonadPlus类是Monad的子类,它提供了mzero
方法,该方法逻辑地将失败的概念封装在一个单一的单元中。
因此,一个库设计人员如果想要编写一些执行某种故障处理的一元代码,可以选择让他的代码使用fail
方法,或者将其代码限制在MonadPlus类中,这样他就可以对使用mzero
即使他不关心单性组合mplus
完全是行动。
关于这个主题的一些讨论在这个wiki页面中关于改革MonadPlus课程的建议。
所以我想我有一个具体的问题:
如果有的话,哪一个单一的例子有一个自然的fail
方法,但不能是MonadPlus的实例,因为它们没有逻辑实现mplus
?
相似问题