precursor-0.1.0.0: src/Precursor/Control/Functor.hs
{-# LANGUAGE NoImplicitPrelude #-}
module Precursor.Control.Functor
( Functor(..)
, ($>)
, (<$>)
, void
, (<&>)
, (<-<)
, (>->)
) where
import Precursor.Control.Category
import Data.Functor
infixl 1 <&>
-- | A flipped version of 'fmap'.
(<&>) :: Functor f => f a -> (a -> b) -> f b
x <&> f = fmap f x
{-# INLINE (<&>) #-}
infixl 1 <-<
-- | Arrow-like operator. Useful for chaining with the '<<<' and
-- 'Precursor.Control.Monad.<=<' combinators.
(<-<) :: Functor f => (b -> c) -> (a -> f b) -> a -> f c
g <-< f = fmap g . f
infixr 1 >->
-- | Arrow-like operator. Useful for chaining with the '>>>' and
-- 'Precursor.Control.Monad.>=>' combinators.
(>->) :: Functor f => (a -> f b) -> (b -> c) -> a -> f c
f >-> g = fmap g . f