module Data.Functor.Syntax
(
(.)
, unary
, (.:)
, binary
, (.::)
, trinary
, flip
, (&)
)
where
import Control.Applicative
import Prelude hiding ((.), flip)
(.) :: Functor f => (a -> b) -> f a -> f b
(.) = fmap
infixr 9 .
unary :: Functor f => (a -> b) -> f a -> f b
unary = (.)
(.:) :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
(.:) = fmap . fmap
infixr 9 .:
binary :: (Functor f, Functor g) => (a -> b) -> f (g a) -> f (g b)
binary = (.:)
(.::) :: (Functor f, Functor g, Functor h) => (a -> b) -> f (g (h a)) -> f (g (h b))
(.::) = fmap . fmap . fmap
infixr 9 .::
trinary :: (Functor f, Functor g, Functor h) => (a -> b) -> f (g (h a)) -> f (g (h b))
trinary = (.::)
flip :: Functor f => f (a -> b) -> a -> f b
flip a b = fmap ($ b) a
(&) :: Applicative f => f (a -> b) -> f a -> f b
(&) = (<*>)
infixl 4 &