假设我们想要使用类似于 Maybe 的容器来处理可能失败的计算。如果我要为我想要做的事情指定一个类型类,它看起来像这样:
class Alternative f => Nullable f where
isEmpty :: f a -> Bool
这样,isEmpty x == True
当且仅当 x = 空
是否有一些现有的类型类可供我用于此功能,或者我应该只使用上面的类?
编辑:更多上下文
我正在尝试实现逻辑编程的匹配,并且我希望能够有一个“非模式”,即“当且仅当该程序失败时才成功,然后执行___”。
最佳答案
也许你可以使用Foldable
以这种方式。 Maybe
, []
, Either
, ErrorT
, ExceptT
都是Foldable
。您可以对 toList
的结果进行模式匹配.
如果您想对成功执行的结果执行某些操作,而在执行失败时不执行任何操作,则可以使用 forM_
直接。
或者,您可以使用 MonoidNull
类型类来自 monoid-subclasses
,提供 null
谓词。
关于haskell - 概括没什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28778986/