小编Dav*_*son的帖子

有没有一种方便的方法来使用模式作为谓词函数?

我最近遇到了需要将谓词函数传递给另一个函数的情况,而且我所寻找的逻辑通常基本上是“这个值是否与这个模式匹配?”

模式匹配似乎在声明、do块和列表推导式中更受欢迎,但有许多函数采用谓词a -> Bool,以某种方式传入模式会非常方便。例如,takeWhileuntilfindspan,等。

到目前为止,我一直在做\a -> case a of MyCons _ -> True; otherwise -> False,或者写一个命名函数,let myPred (MyCons _) = True; myPred _ = False in但它们看起来都非常丑陋而且不太惯用。“明显的”(和错误的)方式会是这样的,\(MyCons _) -> True但是这会因为偏袒而自然而然地引发错误,即使如此,感觉也必须有一种更清洁的方式。

有没有更简洁/干净的方法来做这种事情?还是我完全以错误的方式处理事情?

haskell

10
推荐指数
1
解决办法
174
查看次数

标签 统计

haskell ×1