#include "containers.h"
module Utils.Containers.Internal.Coercions where
#ifdef __GLASGOW_HASKELL__
import Data.Coerce
#endif
infixl 8 .#
#ifdef __GLASGOW_HASKELL__
(.#) :: Coercible b a => (b -> c) -> (a -> b) -> a -> c
(.#) f _ = coerce f
#else
(.#) :: (b -> c) -> (a -> b) -> a -> c
(.#) = (.)
#endif
infix 9 .^#
#ifdef __GLASGOW_HASKELL__
(.^#) :: Coercible c b => (a -> c -> d) -> (b -> c) -> (a -> b -> d)
(.^#) f _ = coerce f
#else
(.^#) :: (a -> c -> d) -> (b -> c) -> (a -> b -> d)
(f .^# g) x y = f x (g y)
#endif