haskell / 9 / libraries / base-4.17.0.0 / control-monad-instances.html

Control.Monad.Instances

Copyright (c) The University of Glasgow 2001
License BSD-style (see the file libraries/base/LICENSE)
Maintainer libraries@haskell.org
Stability provisional
Portability portable
Safe Haskell Safe
Language Haskell2010

Description

Deprecated: This module now contains no instances and will be removed in the future

This module is DEPRECATED and will be removed in the future!

Functor and Monad instances for (->) r and Functor instances for (,) a and Either a.

class Functor f where Source

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 https://www.schoolofhaskell.com/user/edwardk/snippets/fmap or https://github.com/quchen/articles/blob/master/second_functor_law.md for an explanation.

Minimal complete definition

fmap

Methods

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

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
Expand

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

>>> fmap show Nothing
Nothing
>>> fmap show (Just 3)
Just "3"

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

>>> fmap show (Left 17)
Left 17
>>> fmap show (Right 17)
Right "17"

Double each element of a list:

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

Apply even to the second element of a pair:

>>> 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:

>>> fmap even ("hello", 1.0, 4)
("hello",1.0,True)

(<$) :: a -> f b -> f a infixl 4 Source

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.

Instances
Instances details
Functor ZipList Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

fmap :: (a -> b) -> ZipList a -> ZipList b Source

(<$) :: a -> ZipList b -> ZipList a Source

Functor Handler Source

Since: base-4.6.0.0

Instance details

Defined in Control.Exception

Methods

fmap :: (a -> b) -> Handler a -> Handler b Source

(<$) :: a -> Handler b -> Handler a Source

Functor Complex Source

Since: base-4.9.0.0

Instance details

Defined in Data.Complex

Methods

fmap :: (a -> b) -> Complex a -> Complex b Source

(<$) :: a -> Complex b -> Complex a Source

Functor Identity Source

Since: base-4.8.0.0

Instance details

Defined in Data.Functor.Identity

Methods

fmap :: (a -> b) -> Identity a -> Identity b Source

(<$) :: a -> Identity b -> Identity a Source

Functor First Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> First a -> First b Source

(<$) :: a -> First b -> First a Source

Functor Last Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> Last a -> Last b Source

(<$) :: a -> Last b -> Last a Source

Functor Down Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

fmap :: (a -> b) -> Down a -> Down b Source

(<$) :: a -> Down b -> Down a Source

Functor First Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> First a -> First b Source

(<$) :: a -> First b -> First a Source

Functor Last Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Last a -> Last b Source

(<$) :: a -> Last b -> Last a Source

Functor Max Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Max a -> Max b Source

(<$) :: a -> Max b -> Max a Source

Functor Min Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

fmap :: (a -> b) -> Min a -> Min b Source

(<$) :: a -> Min b -> Min a Source

Functor Dual Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

fmap :: (a -> b) -> Dual a -> Dual b Source

(<$) :: a -> Dual b -> Dual a Source

Functor Product Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

fmap :: (a -> b) -> Product a -> Product b Source

(<$) :: a -> Product b -> Product a Source

Functor Sum Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

fmap :: (a -> b) -> Sum a -> Sum b Source

(<$) :: a -> Sum b -> Sum a Source

Functor STM Source

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

fmap :: (a -> b) -> STM a -> STM b Source

(<$) :: a -> STM b -> STM a Source

Functor NoIO Source

Since: base-4.8.0.0

Instance details

Defined in GHC.GHCi

Methods

fmap :: (a -> b) -> NoIO a -> NoIO b Source

(<$) :: a -> NoIO b -> NoIO a Source

Functor Par1 Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Par1 a -> Par1 b Source

(<$) :: a -> Par1 b -> Par1 a Source

Functor ArgDescr Source

Since: base-4.7.0.0

Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> ArgDescr a -> ArgDescr b Source

(<$) :: a -> ArgDescr b -> ArgDescr a Source

Functor ArgOrder Source

Since: base-4.7.0.0

Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> ArgOrder a -> ArgOrder b Source

(<$) :: a -> ArgOrder b -> ArgOrder a Source

Functor OptDescr Source

Since: base-4.7.0.0

Instance details

Defined in System.Console.GetOpt

Methods

fmap :: (a -> b) -> OptDescr a -> OptDescr b Source

(<$) :: a -> OptDescr b -> OptDescr a Source

Functor ReadP Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

fmap :: (a -> b) -> ReadP a -> ReadP b Source

(<$) :: a -> ReadP b -> ReadP a Source

Functor ReadPrec Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

fmap :: (a -> b) -> ReadPrec a -> ReadPrec b Source

(<$) :: a -> ReadPrec b -> ReadPrec a Source

Functor IO Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> IO a -> IO b Source

(<$) :: a -> IO b -> IO a Source

Functor NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> NonEmpty a -> NonEmpty b Source

(<$) :: a -> NonEmpty b -> NonEmpty a Source

Functor Maybe Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> Maybe a -> Maybe b Source

(<$) :: a -> Maybe b -> Maybe a Source

Functor Solo Source

Since: base-4.15

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> Solo a -> Solo b Source

(<$) :: a -> Solo b -> Solo a Source

Functor [] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> [a] -> [b] Source

(<$) :: a -> [b] -> [a] Source

Monad m => Functor (WrappedMonad m) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

fmap :: (a -> b) -> WrappedMonad m a -> WrappedMonad m b Source

(<$) :: a -> WrappedMonad m b -> WrappedMonad m a Source

Arrow a => Functor (ArrowMonad a) Source

Since: base-4.6.0.0

Instance details

Defined in Control.Arrow

Methods

fmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b Source

(<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 Source

Functor (ST s) Source

Since: base-2.1

Instance details

Defined in Control.Monad.ST.Lazy.Imp

Methods

fmap :: (a -> b) -> ST s a -> ST s b Source

(<$) :: a -> ST s b -> ST s a Source

Functor (Either a) Source

Since: base-3.0

Instance details

Defined in Data.Either

Methods

fmap :: (a0 -> b) -> Either a a0 -> Either a b Source

(<$) :: a0 -> Either a b -> Either a a0 Source

Functor (Proxy :: Type -> Type) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

fmap :: (a -> b) -> Proxy a -> Proxy b Source

(<$) :: a -> Proxy b -> Proxy a Source

Functor (Arg a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

fmap :: (a0 -> b) -> Arg a a0 -> Arg a b Source

(<$) :: a0 -> Arg a b -> Arg a a0 Source

Functor (Array i) Source

Since: base-2.1

Instance details

Defined in GHC.Arr

Methods

fmap :: (a -> b) -> Array i a -> Array i b Source

(<$) :: a -> Array i b -> Array i a Source

Functor (U1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> U1 a -> U1 b Source

(<$) :: a -> U1 b -> U1 a Source

Functor (V1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> V1 a -> V1 b Source

(<$) :: a -> V1 b -> V1 a Source

Functor (ST s) Source

Since: base-2.1

Instance details

Defined in GHC.ST

Methods

fmap :: (a -> b) -> ST s a -> ST s b Source

(<$) :: a -> ST s b -> ST s a Source

Functor ((,) a) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b) -> (a, a0) -> (a, b) Source

(<$) :: a0 -> (a, b) -> (a, a0) Source

Arrow a => Functor (WrappedArrow a b) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

fmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 Source

(<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 Source

Functor m => Functor (Kleisli m a) Source

Since: base-4.14.0.0

Instance details

Defined in Control.Arrow

Methods

fmap :: (a0 -> b) -> Kleisli m a a0 -> Kleisli m a b Source

(<$) :: a0 -> Kleisli m a b -> Kleisli m a a0 Source

Functor (Const m :: Type -> Type) Source

Since: base-2.1

Instance details

Defined in Data.Functor.Const

Methods

fmap :: (a -> b) -> Const m a -> Const m b Source

(<$) :: a -> Const m b -> Const m a Source

Functor f => Functor (Ap f) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

fmap :: (a -> b) -> Ap f a -> Ap f b Source

(<$) :: a -> Ap f b -> Ap f a Source

Functor f => Functor (Alt f) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

fmap :: (a -> b) -> Alt f a -> Alt f b Source

(<$) :: a -> Alt f b -> Alt f a Source

(Generic1 f, Functor (Rep1 f)) => Functor (Generically1 f) Source

Since: base-4.17.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Generically1 f a -> Generically1 f b Source

(<$) :: a -> Generically1 f b -> Generically1 f a Source

Functor f => Functor (Rec1 f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> Rec1 f a -> Rec1 f b Source

(<$) :: a -> Rec1 f b -> Rec1 f a Source

Functor (URec (Ptr ()) :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec (Ptr ()) a -> URec (Ptr ()) b Source

(<$) :: a -> URec (Ptr ()) b -> URec (Ptr ()) a Source

Functor (URec Char :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Char a -> URec Char b Source

(<$) :: a -> URec Char b -> URec Char a Source

Functor (URec Double :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Double a -> URec Double b Source

(<$) :: a -> URec Double b -> URec Double a Source

Functor (URec Float :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Float a -> URec Float b Source

(<$) :: a -> URec Float b -> URec Float a Source

Functor (URec Int :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Int a -> URec Int b Source

(<$) :: a -> URec Int b -> URec Int a Source

Functor (URec Word :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> URec Word a -> URec Word b Source

(<$) :: a -> URec Word b -> URec Word a Source

Functor ((,,) a b) Source

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, a0) -> (a, b, b0) Source

(<$) :: a0 -> (a, b, b0) -> (a, b, a0) Source

(Functor f, Functor g) => Functor (Product f g) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

fmap :: (a -> b) -> Product f g a -> Product f g b Source

(<$) :: a -> Product f g b -> Product f g a Source

(Functor f, Functor g) => Functor (Sum f g) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Sum

Methods

fmap :: (a -> b) -> Sum f g a -> Sum f g b Source

(<$) :: a -> Sum f g b -> Sum f g a Source

(Functor f, Functor g) => Functor (f :*: g) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :*: g) a -> (f :*: g) b Source

(<$) :: a -> (f :*: g) b -> (f :*: g) a Source

(Functor f, Functor g) => Functor (f :+: g) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :+: g) a -> (f :+: g) b Source

(<$) :: a -> (f :+: g) b -> (f :+: g) a Source

Functor (K1 i c :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> K1 i c a -> K1 i c b Source

(<$) :: a -> K1 i c b -> K1 i c a Source

Functor ((,,,) a b c) Source

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

fmap :: (a0 -> b0) -> (a, b, c, a0) -> (a, b, c, b0) Source

(<$) :: a0 -> (a, b, c, b0) -> (a, b, c, a0) Source

Functor ((->) r) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

fmap :: (a -> b) -> (r -> a) -> r -> b Source

(<$) :: a -> (r -> b) -> r -> a Source

(Functor f, Functor g) => Functor (Compose f g) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Compose

Methods

fmap :: (a -> b) -> Compose f g a -> Compose f g b Source

(<$) :: a -> Compose f g b -> Compose f g a Source

(Functor f, Functor g) => Functor (f :.: g) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> (f :.: g) a -> (f :.: g) b Source

(<$) :: a -> (f :.: g) b -> (f :.: g) a Source

Functor f => Functor (M1 i c f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

fmap :: (a -> b) -> M1 i c f a -> M1 i c f b Source

(<$) :: a -> M1 i c f b -> M1 i c f a Source

class Applicative m => Monad m where Source

The Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions.

Instances of Monad should satisfy the following:

Left identity
return a >>= k = k a
Right identity
m >>= return = m
Associativity
m >>= (\x -> k x >>= h) = (m >>= k) >>= h

Furthermore, the Monad and Applicative operations should relate as follows:

The above laws imply:

and that pure and (<*>) satisfy the applicative functor laws.

The instances of Monad for lists, Maybe and IO defined in the Prelude satisfy these laws.

Minimal complete definition

(>>=)

Methods

(>>=) :: forall a b. m a -> (a -> m b) -> m b infixl 1 Source

Sequentially compose two actions, passing any value produced by the first as an argument to the second.

'as >>= bs' can be understood as the do expression

do a <- as
   bs a

(>>) :: forall a b. m a -> m b -> m b infixl 1 Source

Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages.

'as >> bs' can be understood as the do expression

do as
   bs

return :: a -> m a Source

Inject a value into the monadic type.

Instances
Instances details
Monad Complex Source

Since: base-4.9.0.0

Instance details

Defined in Data.Complex

Methods

(>>=) :: Complex a -> (a -> Complex b) -> Complex b Source

(>>) :: Complex a -> Complex b -> Complex b Source

return :: a -> Complex a Source

Monad Identity Source

Since: base-4.8.0.0

Instance details

Defined in Data.Functor.Identity

Methods

(>>=) :: Identity a -> (a -> Identity b) -> Identity b Source

(>>) :: Identity a -> Identity b -> Identity b Source

return :: a -> Identity a Source

Monad First Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

(>>=) :: First a -> (a -> First b) -> First b Source

(>>) :: First a -> First b -> First b Source

return :: a -> First a Source

Monad Last Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

(>>=) :: Last a -> (a -> Last b) -> Last b Source

(>>) :: Last a -> Last b -> Last b Source

return :: a -> Last a Source

Monad Down Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

(>>=) :: Down a -> (a -> Down b) -> Down b Source

(>>) :: Down a -> Down b -> Down b Source

return :: a -> Down a Source

Monad First Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

(>>=) :: First a -> (a -> First b) -> First b Source

(>>) :: First a -> First b -> First b Source

return :: a -> First a Source

Monad Last Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Last a -> (a -> Last b) -> Last b Source

(>>) :: Last a -> Last b -> Last b Source

return :: a -> Last a Source

Monad Max Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Max a -> (a -> Max b) -> Max b Source

(>>) :: Max a -> Max b -> Max b Source

return :: a -> Max a Source

Monad Min Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

(>>=) :: Min a -> (a -> Min b) -> Min b Source

(>>) :: Min a -> Min b -> Min b Source

return :: a -> Min a Source

Monad Dual Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(>>=) :: Dual a -> (a -> Dual b) -> Dual b Source

(>>) :: Dual a -> Dual b -> Dual b Source

return :: a -> Dual a Source

Monad Product Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(>>=) :: Product a -> (a -> Product b) -> Product b Source

(>>) :: Product a -> Product b -> Product b Source

return :: a -> Product a Source

Monad Sum Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(>>=) :: Sum a -> (a -> Sum b) -> Sum b Source

(>>) :: Sum a -> Sum b -> Sum b Source

return :: a -> Sum a Source

Monad STM Source

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

(>>=) :: STM a -> (a -> STM b) -> STM b Source

(>>) :: STM a -> STM b -> STM b Source

return :: a -> STM a Source

Monad NoIO Source

Since: base-4.4.0.0

Instance details

Defined in GHC.GHCi

Methods

(>>=) :: NoIO a -> (a -> NoIO b) -> NoIO b Source

(>>) :: NoIO a -> NoIO b -> NoIO b Source

return :: a -> NoIO a Source

Monad Par1 Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: Par1 a -> (a -> Par1 b) -> Par1 b Source

(>>) :: Par1 a -> Par1 b -> Par1 b Source

return :: a -> Par1 a Source

Monad ReadP Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

(>>=) :: ReadP a -> (a -> ReadP b) -> ReadP b Source

(>>) :: ReadP a -> ReadP b -> ReadP b Source

return :: a -> ReadP a Source

Monad ReadPrec Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

(>>=) :: ReadPrec a -> (a -> ReadPrec b) -> ReadPrec b Source

(>>) :: ReadPrec a -> ReadPrec b -> ReadPrec b Source

return :: a -> ReadPrec a Source

Monad IO Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

(>>=) :: IO a -> (a -> IO b) -> IO b Source

(>>) :: IO a -> IO b -> IO b Source

return :: a -> IO a Source

Monad NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(>>=) :: NonEmpty a -> (a -> NonEmpty b) -> NonEmpty b Source

(>>) :: NonEmpty a -> NonEmpty b -> NonEmpty b Source

return :: a -> NonEmpty a Source

Monad Maybe Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

(>>=) :: Maybe a -> (a -> Maybe b) -> Maybe b Source

(>>) :: Maybe a -> Maybe b -> Maybe b Source

return :: a -> Maybe a Source

Monad Solo Source

Since: base-4.15

Instance details

Defined in GHC.Base

Methods

(>>=) :: Solo a -> (a -> Solo b) -> Solo b Source

(>>) :: Solo a -> Solo b -> Solo b Source

return :: a -> Solo a Source

Monad [] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

(>>=) :: [a] -> (a -> [b]) -> [b] Source

(>>) :: [a] -> [b] -> [b] Source

return :: a -> [a] Source

Monad m => Monad (WrappedMonad m) Source

Since: base-4.7.0.0

Instance details

Defined in Control.Applicative

Methods

(>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b Source

(>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b Source

return :: a -> WrappedMonad m a Source

ArrowApply a => Monad (ArrowMonad a) Source

Since: base-2.1

Instance details

Defined in Control.Arrow

Methods

(>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b Source

(>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b Source

return :: a0 -> ArrowMonad a a0 Source

Monad (ST s) Source

Since: base-2.1

Instance details

Defined in Control.Monad.ST.Lazy.Imp

Methods

(>>=) :: ST s a -> (a -> ST s b) -> ST s b Source

(>>) :: ST s a -> ST s b -> ST s b Source

return :: a -> ST s a Source

Monad (Either e) Source

Since: base-4.4.0.0

Instance details

Defined in Data.Either

Methods

(>>=) :: Either e a -> (a -> Either e b) -> Either e b Source

(>>) :: Either e a -> Either e b -> Either e b Source

return :: a -> Either e a Source

Monad (Proxy :: Type -> Type) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

(>>=) :: Proxy a -> (a -> Proxy b) -> Proxy b Source

(>>) :: Proxy a -> Proxy b -> Proxy b Source

return :: a -> Proxy a Source

Monad (U1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: U1 a -> (a -> U1 b) -> U1 b Source

(>>) :: U1 a -> U1 b -> U1 b Source

return :: a -> U1 a Source

Monad (ST s) Source

Since: base-2.1

Instance details

Defined in GHC.ST

Methods

(>>=) :: ST s a -> (a -> ST s b) -> ST s b Source

(>>) :: ST s a -> ST s b -> ST s b Source

return :: a -> ST s a Source

Monoid a => Monad ((,) a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, a0) -> (a0 -> (a, b)) -> (a, b) Source

(>>) :: (a, a0) -> (a, b) -> (a, b) Source

return :: a0 -> (a, a0) Source

Monad m => Monad (Kleisli m a) Source

Since: base-4.14.0.0

Instance details

Defined in Control.Arrow

Methods

(>>=) :: Kleisli m a a0 -> (a0 -> Kleisli m a b) -> Kleisli m a b Source

(>>) :: Kleisli m a a0 -> Kleisli m a b -> Kleisli m a b Source

return :: a0 -> Kleisli m a a0 Source

Monad f => Monad (Ap f) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

(>>=) :: Ap f a -> (a -> Ap f b) -> Ap f b Source

(>>) :: Ap f a -> Ap f b -> Ap f b Source

return :: a -> Ap f a Source

Monad f => Monad (Alt f) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(>>=) :: Alt f a -> (a -> Alt f b) -> Alt f b Source

(>>) :: Alt f a -> Alt f b -> Alt f b Source

return :: a -> Alt f a Source

Monad f => Monad (Rec1 f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: Rec1 f a -> (a -> Rec1 f b) -> Rec1 f b Source

(>>) :: Rec1 f a -> Rec1 f b -> Rec1 f b Source

return :: a -> Rec1 f a Source

(Monoid a, Monoid b) => Monad ((,,) a b) Source

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, b, a0) -> (a0 -> (a, b, b0)) -> (a, b, b0) Source

(>>) :: (a, b, a0) -> (a, b, b0) -> (a, b, b0) Source

return :: a0 -> (a, b, a0) Source

(Monad f, Monad g) => Monad (Product f g) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

(>>=) :: Product f g a -> (a -> Product f g b) -> Product f g b Source

(>>) :: Product f g a -> Product f g b -> Product f g b Source

return :: a -> Product f g a Source

(Monad f, Monad g) => Monad (f :*: g) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: (f :*: g) a -> (a -> (f :*: g) b) -> (f :*: g) b Source

(>>) :: (f :*: g) a -> (f :*: g) b -> (f :*: g) b Source

return :: a -> (f :*: g) a Source

(Monoid a, Monoid b, Monoid c) => Monad ((,,,) a b c) Source

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

(>>=) :: (a, b, c, a0) -> (a0 -> (a, b, c, b0)) -> (a, b, c, b0) Source

(>>) :: (a, b, c, a0) -> (a, b, c, b0) -> (a, b, c, b0) Source

return :: a0 -> (a, b, c, a0) Source

Monad ((->) r) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

(>>=) :: (r -> a) -> (a -> r -> b) -> r -> b Source

(>>) :: (r -> a) -> (r -> b) -> r -> b Source

return :: a -> r -> a Source

Monad f => Monad (M1 i c f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

(>>=) :: M1 i c f a -> (a -> M1 i c f b) -> M1 i c f b Source

(>>) :: M1 i c f a -> M1 i c f b -> M1 i c f b Source

return :: a -> M1 i c f a Source

© The University of Glasgow and others
Licensed under a BSD-style license (see top of the page).
https://downloads.haskell.org/~ghc/9.4.2/docs/libraries/base-4.17.0.0/Control-Monad-Instances.html