10 Dec
2010
10 Dec
'10
12:13 a.m.
On Thu, Dec 9, 2010 at 6:02 PM, Russ Abbott
I recently was writing code long these lines.
f x = p1 x || p2 x || ... || pn x
I would have liked to write that in pointfree form but couldn't find a library function to do it.
I created this.
disj :: [a -> Bool] -> a -> Bool disj ps = (\x -> or $ map ($x) ps)
disj2 p1 p2 = disj [p1, p2] disj3 p1 p2 p3 = disj [p1, p2] disj4 p1 p2 p3 p4 = disj [p1, p2] ...
With that I can write my function as follows.
f = disj pi p2 p3 ... pn
Is there a standard way to do this?
Assuming you have in instance of Applicative for ((->) r) in scope: (<||>) :: (r -> Bool) -> (r -> Bool) -> (r -> Bool) (<||>) = liftA2 (||) then you could say: f = p1 <||> p2 <||> p3 ... Antoine