{-# LANGUAGE CPP #-}
module Functor
( -- * Functor
Functor(..)
, (<$>)
, ($>)
#if MIN_VERSION_base(4,11,0)
, (<&>)
#endif
, void
, unzip
-- ** Optics
, mapped
-- * Apply
, Apply(..)
, liftF3
-- ** Newtypes
, MaybeApply(..)
, Static(..)
-- * Alt
, Alt(..)
-- * Plus
, Plus(..)
-- * Bind
, Bind(..)
, (-<<)
-- * Extend
, Extend(..)
-- * MFunctor
, MFunctor(..)
) where
import Control.Lens.Setter (mapped)
import Control.Monad.Morph (MFunctor, hoist)
import Data.Functor (Functor(fmap, (<$)), void, ($>), (<$>))
#if MIN_VERSION_base(4,11,0)
import Data.Functor ((<&>))
#endif
import Data.Functor.Alt (Alt((<!>)))
import Data.Functor.Apply (Apply(liftF2, (.>), (<.), (<.>)),
MaybeApply(MaybeApply, runMaybeApply), liftF3)
import Data.Functor.Bind (Bind(join, (>>-)), (-<<))
import Data.Functor.Extend (Extend(duplicated, extended))
import Data.Functor.Plus (Plus(zero))
import Data.List.NonEmpty (unzip)
import Data.Semigroupoid.Static (Static(Static, runStatic))