$ ghci
Prelude>: m + Control.Arrow
Prelude Control.Arrow>: t uncurry (&&). ((0 <) &&& (<10))
uncurry (&&). ((0 <) &&& (<10)) :: (Num a, Ord a) => a -> Bool
Prelude Control.Arrow> filter (uncurry (&&). ((0 <) &&& (<10))) [0..15]
[1,2,3,4,5,6,7,8,9]
Or declare your own operators if you do this often.
infixr 3 &&: p &&: q = \a -> pa && qa infixr 2 ||: p ||: q = \a -> pa || qa not' = (.) not all' = foldr (&&:) $ const True any' = foldr (||:) $ const False example xs = filter (p &&: q ||: not' r) xs
ephemient
source share