HORIZON HASKELLDocslts/ghc-10.0.xc7d136e2026-10-12Search names, modules, packages, or :: a typeCtrl K

GHC 10.0.0.20260917 · lts/ghc-10.0.x · c7d136e · 2026-10-12

Modulesemigroupoids-6.0.2

Data.Functor.Plus

  • 2 types
  • 4 classes
  • 12 values
value($>) :: Functor f => f a -> b -> f b
#

Flipped version of <$.

Examples

Replace the contents of a Maybe Int with a constant String:

Example1 expression
Nothing $> "foo"Nothing
Example1 expression
Just 90210 $> "foo"Just "foo"

Replace the contents of an Either Int Int with a constant String, resulting in an Either Int String:

Example1 expression
Left 8675309 $> "foo"Left 8675309
Example1 expression
Right 8675309 $> "foo"Right "foo"

Replace each element of a list with a constant String:

Example1 expression
[1,2,3] $> "foo"["foo","foo","foo"]

Replace the second element of a pair with a constant String:

Example1 expression
(1,2) $> "foo"(1,"foo")
value(<$>) :: Functor f => (a -> b) -> f a -> f b
#

An infix synonym for fmap.

The name of this operator is an allusion to Prelude.$. Note the similarities between their types:

 ($)  ::              (a -> b) ->   a ->   b
(<$>) :: Functor f => (a -> b) -> f a -> f b

Whereas Prelude.$ is function application, <$> is function application lifted over a Functor.

Examples

Convert from a Maybe Int to a Maybe String using show:

Example1 expression
show <$> NothingNothing
Example1 expression
show <$> Just 3Just "3"

Convert from an Either Int Int to an Either Int String using show:

Example1 expression
show <$> Left 17Left 17
Example1 expression
show <$> Right 17Right "17"

Double each element of a list:

Example1 expression
(*2) <$> [1,2,3][2,4,6]

Apply even to the second element of a pair:

Example1 expression
even <$> (2,2)(2,True)
value(<..>) :: Apply w => w a -> w (a -> b) -> w b
#
valueliftF3 :: Apply w => (a -> b -> c -> d) -> w a -> w b -> w c -> w d
#
classclass Functor (f :: Type -> Type) where
#

A type f is a Functor if it provides a function fmap which, given any types a and b lets you apply any function from (a -> b) to turn an f a into an f b, preserving the structure of f. Furthermore f needs to adhere to the following:

Identity

fmap id == id

Composition

fmap (f . g) == fmap f . fmap g

Note, that the second law follows from the free theorem of the type fmap and the first law, so you need only check that the former condition holds. See these articles by School of Haskell or David Luposchainsky for an explanation.

Methods

  • fmap :: (a -> b) -> f a -> f b

    fmap is used to apply a function of type (a -> b) to a value of type f a, where f is a functor, to produce a value of type f b. Note that for any type constructor with more than one parameter (e.g., Either), only the last type parameter can be modified with fmap (e.g., b in Either a b).

    Some type constructors with two parameters or more have a Bifunctor instance that allows both the last and the penultimate parameters to be mapped over.

    Examples

    Convert from a Maybe Int to a Maybe String using show:

    Example2 expressions
    fmap show NothingNothingfmap show (Just 3)Just "3"

    Convert from an Either Int Int to an Either Int String using show:

    Example2 expressions
    fmap show (Left 17)Left 17fmap show (Right 17)Right "17"

    Double each element of a list:

    Example1 expression
    fmap (*2) [1,2,3][2,4,6]

    Apply even to the second element of a pair:

    Example1 expression
    fmap even (2,2)(2,True)

    It may seem surprising that the function is only applied to the last element of the tuple compared to the list example above which applies it to every element in the list. To understand, remember that tuples are type constructors with multiple type parameters: a tuple of 3 elements (a,b,c) can also be written (,,) a b c and its Functor instance is defined for Functor ((,,) a b) (i.e., only the third parameter is free to be mapped over with fmap).

    It explains why fmap can be used with tuples containing values of different types as in the following example:

    Example1 expression
    fmap even ("hello", 1.0, 4)("hello",1.0,True)
  • (<$) :: a -> f b -> f ainfixl 4

    Replace all locations in the input with the same value. The default definition is fmap . const, but this may be overridden with a more efficient version.

    Examples

    Perform a computation with Maybe and replace the result with a constant value if it is Just:

    Example2 expressions
    'a' <$ Just 2Just 'a''a' <$ NothingNothing
Instances152Functor, …
classclass Functor f => Alt (f :: Type -> Type) where
#

Methods

Instances43Alt, …
  • Alt FirstDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt LastDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt IntMapDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt SeqDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt NonEmptyDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt IdentityDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt FirstDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt LastDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt MaybeDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt IODefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt []Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alternative f => Alt (WrappedApplicative f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • MonadPlus m => Alt (WrappedMonad m)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Ord k => Alt (Map k)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt U1Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt V1Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt (Either a)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (Lift f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Functor f, Monad f) => Alt (MaybeT f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Hashable k, Eq k) => Alt (HashMap k)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • ArrowPlus a => Alt (WrappedArrow a b)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (Rec1 f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (Static f a)Defined in semigroupoids-6.0.2 · Data.Semigroupoid.Static
  • Alt f => Alt (Backwards f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (IdentityT f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (ReaderT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (StateT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (StateT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (Reverse f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Functor f, Monad f, Semigroup e) => Alt (ExceptT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Semigroup c => Alt (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Alt f, Alt g) => Alt (Product f g)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Alt f, Alt g) => Alt (f :*: g)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Alt f => Alt (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Alt f, Functor g) => Alt (Compose f g)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • (Alt f, Functor g) => Alt (f :.: g)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
classclass Functor f => Apply (f :: Type -> Type) where
#

Methods

  • (<.>) :: f (a -> b) -> f a -> f binfixl 4
  • (.>) :: f a -> f b -> f binfixl 4
  • (<.) :: f a -> f b -> f ainfixl 4
  • liftF2 :: (a -> b -> c) -> f a -> f b -> f c
Instances69Apply, …
  • Apply ComplexDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply FirstDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply LastDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply MaxDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply MinDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply IntMapDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply SeqDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply TreeDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply NonEmptyDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply IdentityDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply FirstDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply LastDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply DownDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply DualDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply ProductDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply SumDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply ZipListDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply Par1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply MaybeDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply QDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply IODefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply []Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Applicative f => Apply (WrappedApplicative f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Monad m => Apply (WrappedMonad m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Semigroup m => Apply (Tuple2 m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Ord k => Apply (Map k)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply U1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply V1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (ST s)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (Either a)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (ST s)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (MaybeApply f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (Lift f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Functor m, Monad m) => Apply (MaybeT m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Hashable k, Eq k) => Apply (HashMap k)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Semigroup f => Apply (Constant f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Semigroup m => Apply (Const m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Arrow a => Apply (WrappedArrow a b)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (Tagged a)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (Alt f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (Rec1 f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (Static f a)Defined in semigroupoids-6.0.2 · Data.Semigroupoid.Static
  • Apply f => Apply (Backwards f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (Reverse f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply m => Apply (ReaderT e m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply w => Apply (TracedT m w)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply w => Apply (IdentityT w)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Biapply p => Apply (Join p)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind m => Apply (StateT s m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind m => Apply (StateT s m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind m => Apply (WriterT w m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Functor m, Monad m) => Apply (ExceptT e m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Semigroup e, Apply w) => Apply (EnvT e w)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply m, Semigroup w) => Apply (WriterT w m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply m, Semigroup w) => Apply (WriterT w m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply w, Semigroup s) => Apply (StoreT s w)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Semigroup c => Apply (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (Cokleisli w a)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply (ContT r m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply ((->) m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply f, Apply g) => Apply (Product f g)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply f, Apply g) => Apply (f :*: g)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Apply f => Apply (M1 i t f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind m => Apply (RWST r w s m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply f, Apply g) => Apply (Compose f g)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Apply f, Apply g) => Apply (f :.: g)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Bind m, Semigroup w) => Apply (RWST r w s m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • (Bind m, Semigroup w) => Apply (RWST r w s m)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
newtypenewtype MaybeApply (f :: Type -> Type) a
#

Constructors

Instances5Functor, Applicative, Comonad, Apply, Extend
newtypenewtype WrappedApplicative (f :: Type -> Type) a
#
Instances6Functor, Applicative, Alternative, Alt, Apply, Plus
classclass Alt f => Plus (f :: Type -> Type) where
#

Methods

Instances37Plus, …
  • Plus IntMapDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus SeqDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus FirstDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus LastDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus MaybeDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus IODefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus []Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Alternative f => Plus (WrappedApplicative f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • MonadPlus m => Plus (WrappedMonad m)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Ord k => Plus (Map k)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus U1Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (Lift f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Functor f, Monad f) => Plus (MaybeT f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Hashable k, Eq k) => Plus (HashMap k)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • ArrowPlus a => Plus (WrappedArrow a b)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (Rec1 f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (Static f a)Defined in semigroupoids-6.0.2 · Data.Semigroupoid.Static
  • Plus f => Plus (Backwards f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (IdentityT f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (ReaderT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (StateT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (StateT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (WriterT w f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (Reverse f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Functor f, Monad f, Semigroup e, Monoid e) => Plus (ExceptT e f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Monoid c => Plus (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Plus f, Plus g) => Plus (Product f g)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Plus f, Plus g) => Plus (f :*: g)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Plus f => Plus (RWST r w s f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Plus f, Functor g) => Plus (Compose f g)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • (Plus f, Functor g) => Plus (f :.: g)Defined in semigroupoids-6.0.2 · Data.Functor.Plus