概括是没有

时间:2015-02-28 06:42:17

标签: haskell error-handling typeclass maybe

所以,让我们说我们想要处理使用类似于Maybe的容器失败的计算。如果我要为我想要做的事情指定一个类型类,它看起来像这样:

class Alternative f => Nullable f where
  isEmpty :: f a -> Bool

这样isEmpty x == True当且仅当x = empty

是否有一些现有的类型类我应该用于此功能,还是应该使用上面的类?

编辑:更多上下文

我正在尝试为逻辑编程实现匹配,我希望能够拥有一个" not pattern" ie"当且仅当该程序失败时才成功,然后执行___"。

2 个答案:

答案 0 :(得分:5)

也许您可以这种方式使用FoldableMaybe[]EitherErrorTExceptT都是Foldable。您可以只对toList的结果进行模式匹配。

如果您希望对成功执行的结果执行某些操作而在发生故障时不执行任何操作,则可以直接使用forM_

或者,您可以使用MonoidNull中提供null谓词的monoid-subclasses类型类。

答案 1 :(得分:1)

正如在对 danidiaz's answer 的评论中所预言的那样,base-4.8 概括了 null 的类型,使其成为 {{1} } 容器:

Foldable