持久性过滤器:使用Or时在过滤器中操作

时间:2015-08-12 21:11:11

标签: haskell persistent

Persistent有一个OR过滤器||.,但似乎没有相应的&&.我想做A && (B || C) && (D || E)这样的事情,我不确定最简单的方法。

我想我可以创建像(A && B && D) || (A && C && D) || (A && B && E) || (A && C && E)这样的所有组合。即使对于这个简单的例子,它也变得非常笨拙。不确定是否有更好的方法可以使用persistent执行此操作。

代码在我执行时编译(在selectList} [A] ++ ([B] ||. [C]), etc.内但不确定它是否与我想要的相同。

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以同时使用++<>和过滤器列表。

来自Persistent manual

people <- selectList [PersonAge >. 25, PersonAge <=. 30] []
liftIO $ print people
     

过滤器列表是AND,因此我们的约束意味着&#34;年龄大于25且年龄小于或等于30&#34;。我们稍后会描述ORing。