{-# LANGUAGE RankNTypes #-} module Chiasma.Lens.Where( where1, ) where import Control.Lens (Over, filtered, taking) where1 :: (Applicative f, Traversable t) => (a -> Bool) -> Over (->) f (t a) (t a) a a where1 :: (a -> Bool) -> Over (->) f (t a) (t a) a a where1 a -> Bool predicate = Int -> Traversing (->) f (t a) (t a) a a -> Over (->) f (t a) (t a) a a forall (p :: * -> * -> *) (f :: * -> *) s t a. (Conjoined p, Applicative f) => Int -> Traversing p f s t a a -> Over p f s t a a taking Int 1 (Traversing (->) f (t a) (t a) a a -> Over (->) f (t a) (t a) a a) -> Traversing (->) f (t a) (t a) a a -> Over (->) f (t a) (t a) a a forall a b. (a -> b) -> a -> b $ Traversing (->) f (t a) (t a) a a forall (t :: * -> *) (f :: * -> *) a b. (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) traverse Traversing (->) f (t a) (t a) a a -> ((a -> BazaarT (->) f a a a) -> a -> BazaarT (->) f a a a) -> Traversing (->) f (t a) (t a) a a forall b c a. (b -> c) -> (a -> b) -> a -> c . (a -> Bool) -> (a -> BazaarT (->) f a a a) -> a -> BazaarT (->) f a a a forall (p :: * -> * -> *) (f :: * -> *) a. (Choice p, Applicative f) => (a -> Bool) -> Optic' p f a a filtered a -> Bool predicate