:: (a -> Bool) -> (a -> Bool) -> (a -> Bool) -package:unipatterns

Lift boolean or over predicates.
And (&&) operator over one-argument properties. Allows building conjuntions between one-argument properties:
> holds 100 $ id === (+0) &&& id === (id . id)
True
Or (||) operator over one-argument properties. Allows building disjunctions between one-argument properties:
> holds 100 $ id === (+0) ||| id === (id . id)
True
Allows building equality properties between functions.
prop_id_idempotent  =  id === id . id
> check $ id === (+0)
+++ OK, passed 200 tests.
> check $ id === id . id
+++ OK, passed 1 tests (exhausted).
> check $ id === (+1)
*** Failed! Falsifiable (after 1 tests):
0
>>> fold (handles (filtered even) sum) [1..10]
30
>>> foldM (handlesM (filtered even) (L.mapM_ print)) [1..10]
2
4
6
8
10
Extend a generic query by a type-specific case