{-# LANGUAGE CPP #-}
{-# LANGUAGE Trustworthy #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Control.Lens.Internal.Coerce
( coerce
, coerce'
, (#..)
) where
import Data.Profunctor.Unsafe
import Data.Coerce
coerce' :: forall a b. Coercible a b => b -> a
#if __GLASGOW_HASKELL__ <710
coerce' = coerce (id :: a -> a)
#else
coerce' :: b -> a
coerce' = b -> a
coerce
#endif
{-# INLINE coerce' #-}
(#..) :: (Profunctor p, Coercible c b) => (b -> c) -> p a b -> p a c
#.. :: (b -> c) -> p a b -> p a c
(#..) = (b -> c) -> p a b -> p a c
forall (p :: * -> * -> *) a b c (q :: * -> * -> *).
(Profunctor p, Coercible c b) =>
q b c -> p a b -> p a c
(#.)
{-# INLINE (#..) #-}