@@ -23,7 +23,7 @@ module Data.Generics.Internal.VL.Prism where
23import Data.Functor.Identity (Identity(..))
23import Data.Functor.Identity (Identity(..))
24import Data.Profunctor (Choice(..), Profunctor(..))
24import Data.Profunctor (Choice(..), Profunctor(..))
25import Data.Coerce
25import Data.Coerce
26−import Data.Generics.Internal.Profunctor.Prism (Market (..), plus, idPrism, prismPRavel)
26+import Data.Generics.Internal.Profunctor.Prism (Market (..), plus, idPrism)
27import Data.Tagged
27import Data.Tagged
28import Data.Profunctor.Unsafe ((#.), (.#))
28import Data.Profunctor.Unsafe ((#.), (.#))
29import Data.Monoid (First (..))
29import Data.Monoid (First (..))
@@ -45,6 +45,9 @@ s ^? l = getFirst (fmof l (First #. Just) s)
45match :: Prism s t a b -> s -> Either t a
45match :: Prism s t a b -> s -> Either t a
46match k = withPrism k $ \_ _match -> _match
46match k = withPrism k $ \_ _match -> _match
48+(#) :: (Tagged b (Identity b) -> Tagged t (Identity t)) -> b -> t
48prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
51prism :: (b -> t) -> (s -> Either t a) -> Prism s t a b
49prism bt seta eta = dimap (\x -> plus pure id (seta x)) (either id (\x -> fmap bt x)) (right' eta)
52prism bt seta eta = dimap (\x -> plus pure id (seta x)) (either id (\x -> fmap bt x)) (right' eta)
50{-# INLINE prism #-}
53{-# INLINE prism #-}