module MonusWeightedSearch.Internal.CoerceOperators where
import Data.Coerce
infixr 9 #.
(#.) :: 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
f = (a -> b) -> a -> c
coerce a -> b
f
{-# INLINE (#.) #-}
infixr 9 .#
(.#) :: Coercible a b => (b -> c) -> (a -> b) -> a -> c
b -> c
f .# :: forall a b c. Coercible a b => (b -> c) -> (a -> b) -> a -> c
.# a -> b
_ = (b -> c) -> a -> c
coerce b -> c
f
{-# INLINE (.#) #-}
infixl 4 <#$>
(<#$>) :: Coercible (f a) (f b) => (a -> b) -> f a -> f b
<#$> :: forall (f :: Type -> Type) a b.
Coercible (f a) (f b) =>
(a -> b) -> f a -> f b
(<#$>) a -> b
_ = f a -> f b
coerce
{-# INLINE (<#$>) #-}
under :: Coercible a b => (b -> b -> b) -> (a -> b) -> a -> a -> a
under :: forall a b.
Coercible a b =>
(b -> b -> b) -> (a -> b) -> a -> a -> a
under b -> b -> b
f a -> b
_ = (b -> b -> b) -> a -> a -> a
coerce b -> b -> b
f
{-# INLINE under #-}