{-# LANGUAGE CPP #-} {-# LANGUAGE Trustworthy #-} module CoerceCompat where import Data.Coerce (Coercible, coerce) (#.) :: Coercible b c => (b -> c) -> (a -> b) -> (a -> c) b -> c _ #. :: forall b c a. Coercible b c => (b -> c) -> (a -> b) -> a -> c #. a -> b x = (a -> b) -> a -> c forall a b. Coercible a b => a -> b coerce a -> b x (#..) :: Coercible b c => (b -> c) -> (i -> a -> b) -> (i -> a -> c) b -> c _ #.. :: forall b c i a. Coercible b c => (b -> c) -> (i -> a -> b) -> i -> a -> c #.. i -> a -> b x = (i -> a -> b) -> i -> a -> c forall a b. Coercible a b => a -> b coerce i -> a -> b x infixr 9 #., #.. {-# INLINE (#.) #-} {-# INLINE (#..) #-}