{-# 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