haskell / 9 / libraries / base-4.17.0.0 / ghc-base.html

GHC.Base

Copyright (c) The University of Glasgow 1992-2002
License see libraries/base/LICENSE
Maintainer cvs-ghc@haskell.org
Stability internal
Portability non-portable (GHC extensions)
Safe Haskell Unsafe
Language Haskell2010

Description

Basic data types and classes.

data NonEmpty a Source

Non-empty (and non-strict) list type.

Since: base-4.9.0.0

Constructors

a :| [a] infixr 5
Instances
Instances details
MonadFix NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in Control.Monad.Fix

Methods

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

MonadZip NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in Control.Monad.Zip

Methods

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

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

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

Foldable NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in Data.Foldable

Methods

fold :: Monoid m => NonEmpty m -> m Source

foldMap :: Monoid m => (a -> m) -> NonEmpty a -> m Source

foldMap' :: Monoid m => (a -> m) -> NonEmpty a -> m Source

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

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

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

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

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

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

toList :: NonEmpty a -> [a] Source

null :: NonEmpty a -> Bool Source

length :: NonEmpty a -> Int Source

elem :: Eq a => a -> NonEmpty a -> Bool Source

maximum :: Ord a => NonEmpty a -> a Source

minimum :: Ord a => NonEmpty a -> a Source

sum :: Num a => NonEmpty a -> a Source

product :: Num a => NonEmpty a -> a Source

Eq1 NonEmpty Source

Since: base-4.10.0.0

Instance details

Defined in Data.Functor.Classes

Methods

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

Ord1 NonEmpty Source

Since: base-4.10.0.0

Instance details

Defined in Data.Functor.Classes

Methods

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

Read1 NonEmpty Source

Since: base-4.10.0.0

Instance details

Defined in Data.Functor.Classes

Show1 NonEmpty Source

Since: base-4.10.0.0

Instance details

Defined in Data.Functor.Classes

Methods

liftShowsPrec :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> Int -> NonEmpty a -> ShowS Source

liftShowList :: (Int -> a -> ShowS) -> ([a] -> ShowS) -> [NonEmpty a] -> ShowS Source

Traversable NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in Data.Traversable

Methods

traverse :: Applicative f => (a -> f b) -> NonEmpty a -> f (NonEmpty b) Source

sequenceA :: Applicative f => NonEmpty (f a) -> f (NonEmpty a) Source

mapM :: Monad m => (a -> m b) -> NonEmpty a -> m (NonEmpty b) Source

sequence :: Monad m => NonEmpty (m a) -> m (NonEmpty a) Source

Applicative NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

pure :: a -> NonEmpty a Source

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

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

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

(<*) :: NonEmpty a -> NonEmpty b -> NonEmpty 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

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

Generic1 NonEmpty Source
Instance details

Defined in GHC.Generics

Associated Types

type Rep1 NonEmpty :: k -> Type Source

Methods

from1 :: forall (a :: k). NonEmpty a -> Rep1 NonEmpty a Source

to1 :: forall (a :: k). Rep1 NonEmpty a -> NonEmpty a Source

Data a => Data (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Data

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> NonEmpty a -> c (NonEmpty a) Source

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (NonEmpty a) Source

toConstr :: NonEmpty a -> Constr Source

dataTypeOf :: NonEmpty a -> DataType Source

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (NonEmpty a)) Source

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (NonEmpty a)) Source

gmapT :: (forall b. Data b => b -> b) -> NonEmpty a -> NonEmpty a Source

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Source

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> NonEmpty a -> r Source

gmapQ :: (forall d. Data d => d -> u) -> NonEmpty a -> [u] Source

gmapQi :: Int -> (forall d. Data d => d -> u) -> NonEmpty a -> u Source

gmapM :: Monad m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> NonEmpty a -> m (NonEmpty a) Source

Semigroup (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Generic (NonEmpty a) Source
Instance details

Defined in GHC.Generics

Associated Types

type Rep (NonEmpty a) :: Type -> Type Source

Methods

from :: NonEmpty a -> Rep (NonEmpty a) x Source

to :: Rep (NonEmpty a) x -> NonEmpty a Source

IsList (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.IsList

Associated Types

type Item (NonEmpty a) Source

Methods

fromList :: [Item (NonEmpty a)] -> NonEmpty a Source

fromListN :: Int -> [Item (NonEmpty a)] -> NonEmpty a Source

toList :: NonEmpty a -> [Item (NonEmpty a)] Source

Read a => Read (NonEmpty a) Source

Since: base-4.11.0.0

Instance details

Defined in GHC.Read

Show a => Show (NonEmpty a) Source

Since: base-4.11.0.0

Instance details

Defined in GHC.Show

Eq a => Eq (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

(/=) :: NonEmpty a -> NonEmpty a -> Bool Source

Ord a => Ord (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

type Rep1 NonEmpty Source

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

type Rep (NonEmpty a) Source

Since: base-4.6.0.0

Instance details

Defined in GHC.Generics

type Item (NonEmpty a) Source
Instance details

Defined in GHC.IsList

type Item (NonEmpty a) = a

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

class Functor f => Applicative f where Source

A functor with application, providing operations to

  • embed pure expressions (pure), and
  • sequence computations and combine their results (<*> and liftA2).

A minimal complete definition must include implementations of pure and of either <*> or liftA2. If it defines both, then they must behave the same as their default definitions:

(<*>) = liftA2 id
liftA2 f x y = f <$> x <*> y

Further, any definition must satisfy the following:

Identity
pure id <*> v = v
Composition
pure (.) <*> u <*> v <*> w = u <*> (v <*> w)
Homomorphism
pure f <*> pure x = pure (f x)
Interchange
u <*> pure y = pure ($ y) <*> u

The other methods have the following default definitions, which may be overridden with equivalent specialized implementations:

As a consequence of these laws, the Functor instance for f will satisfy

It may be useful to note that supposing

forall x y. p (q x y) = f x . g y

it follows from the above that

liftA2 p (liftA2 q u v) = liftA2 f u . liftA2 g v

If f is also a Monad, it should satisfy

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

Minimal complete definition

pure, ((<*>) | liftA2)

Methods

pure :: a -> f a Source

Lift a value.

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

Sequential application.

A few functors support an implementation of <*> that is more efficient than the default one.

Example
Expand

Used in combination with (<$>), (<*>) can be used to build a record.

>>> data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
>>> produceFoo :: Applicative f => f Foo
>>> produceBar :: Applicative f => f Bar
>>> produceBaz :: Applicative f => f Baz
>>> mkState :: Applicative f => f MyState
>>> mkState = MyState <$> produceFoo <*> produceBar <*> produceBaz

liftA2 :: (a -> b -> c) -> f a -> f b -> f c Source

Lift a binary function to actions.

Some functors support an implementation of liftA2 that is more efficient than the default one. In particular, if fmap is an expensive operation, it is likely better to use liftA2 than to fmap over the structure and then use <*>.

This became a typeclass method in 4.10.0.0. Prior to that, it was a function defined in terms of <*> and fmap.

Example
Expand
>>> liftA2 (,) (Just 3) (Just 5)
Just (3,5)

(*>) :: f a -> f b -> f b infixl 4 Source

Sequence actions, discarding the value of the first argument.

Examples
Expand

If used in conjunction with the Applicative instance for Maybe, you can chain Maybe computations, with a possible "early return" in case of Nothing.

>>> Just 2 *> Just 3
Just 3
>>> Nothing *> Just 3
Nothing

Of course a more interesting use case would be to have effectful computations instead of just returning pure values.

>>> import Data.Char
>>> import Text.ParserCombinators.ReadP
>>> let p = string "my name is " *> munch1 isAlpha <* eof
>>> readP_to_S p "my name is Simon"
[("Simon","")]

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

Sequence actions, discarding the value of the second argument.

Instances
Instances details
Applicative ZipList Source
f <$> ZipList xs1 <*> ... <*> ZipList xsN
    = ZipList (zipWithN f xs1 ... xsN)

where zipWithN refers to the zipWith function of the appropriate arity (zipWith, zipWith3, zipWith4, ...). For example:

(\a b c -> stimes c [a, b]) <$> ZipList "abcd" <*> ZipList "567" <*> ZipList [1..]
    = ZipList (zipWith3 (\a b c -> stimes c [a, b]) "abcd" "567" [1..])
    = ZipList {getZipList = ["a5","b6b6","c7c7c7"]}

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

pure :: a -> ZipList a Source

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

liftA2 :: (a -> b -> c) -> ZipList a -> ZipList b -> ZipList c Source

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

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

Applicative Complex Source

Since: base-4.9.0.0

Instance details

Defined in Data.Complex

Methods

pure :: a -> Complex a Source

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

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

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

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

Applicative Identity Source

Since: base-4.8.0.0

Instance details

Defined in Data.Functor.Identity

Methods

pure :: a -> Identity a Source

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

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

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

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

Applicative First Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

pure :: a -> First a Source

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

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

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

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

Applicative Last Source

Since: base-4.8.0.0

Instance details

Defined in Data.Monoid

Methods

pure :: a -> Last a Source

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

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

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

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

Applicative Down Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

pure :: a -> Down a Source

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

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

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

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

Applicative First Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

pure :: a -> First a Source

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

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

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

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

Applicative Last Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

pure :: a -> Last a Source

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

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

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

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

Applicative Max Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

pure :: a -> Max a Source

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

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

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

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

Applicative Min Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

pure :: a -> Min a Source

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

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

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

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

Applicative Dual Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

pure :: a -> Dual a Source

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

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

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

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

Applicative Product Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

pure :: a -> Product a Source

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

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

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

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

Applicative Sum Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

pure :: a -> Sum a Source

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

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

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

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

Applicative STM Source

Since: base-4.8.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

pure :: a -> STM a Source

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

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

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

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

Applicative NoIO Source

Since: base-4.8.0.0

Instance details

Defined in GHC.GHCi

Methods

pure :: a -> NoIO a Source

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

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

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

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

Applicative Par1 Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> Par1 a Source

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

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

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

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

Applicative ReadP Source

Since: base-4.6.0.0

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

pure :: a -> ReadP a Source

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

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

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

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

Applicative ReadPrec Source

Since: base-4.6.0.0

Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

pure :: a -> ReadPrec a Source

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

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

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

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

Applicative IO Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

pure :: a -> IO a Source

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

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

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

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

Applicative NonEmpty Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

pure :: a -> NonEmpty a Source

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

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

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

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

Applicative Maybe Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

pure :: a -> Maybe a Source

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

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

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

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

Applicative Solo Source

Since: base-4.15

Instance details

Defined in GHC.Base

Methods

pure :: a -> Solo a Source

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

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

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

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

Applicative [] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

pure :: a -> [a] Source

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

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

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

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

Monad m => Applicative (WrappedMonad m) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

pure :: a -> WrappedMonad m a Source

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

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

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

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

Arrow a => Applicative (ArrowMonad a) Source

Since: base-4.6.0.0

Instance details

Defined in Control.Arrow

Methods

pure :: a0 -> ArrowMonad a a0 Source

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

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

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

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

Applicative (ST s) Source

Since: base-2.1

Instance details

Defined in Control.Monad.ST.Lazy.Imp

Methods

pure :: a -> ST s a Source

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

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

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

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

Applicative (Either e) Source

Since: base-3.0

Instance details

Defined in Data.Either

Methods

pure :: a -> Either e a Source

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

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

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

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

Applicative (Proxy :: Type -> Type) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

pure :: a -> Proxy a Source

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

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

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

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

Applicative (U1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> U1 a Source

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

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

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

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

Applicative (ST s) Source

Since: base-4.4.0.0

Instance details

Defined in GHC.ST

Methods

pure :: a -> ST s a Source

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

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

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

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

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

For tuples, the Monoid constraint on a determines how the first values merge. For example, Strings concatenate:

("hello ", (+15)) <*> ("world!", 2002)
("hello world!",2017)

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

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

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

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

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

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

Arrow a => Applicative (WrappedArrow a b) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

pure :: a0 -> WrappedArrow a b a0 Source

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

liftA2 :: (a0 -> b0 -> c) -> WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b c Source

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

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

Applicative m => Applicative (Kleisli m a) Source

Since: base-4.14.0.0

Instance details

Defined in Control.Arrow

Methods

pure :: a0 -> Kleisli m a a0 Source

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

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

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

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

Monoid m => Applicative (Const m :: Type -> Type) Source

Since: base-2.0.1

Instance details

Defined in Data.Functor.Const

Methods

pure :: a -> Const m a Source

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

liftA2 :: (a -> b -> c) -> Const m a -> Const m b -> Const m c Source

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

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

Applicative f => Applicative (Ap f) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

pure :: a -> Ap f a Source

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

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

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

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

Applicative f => Applicative (Alt f) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

pure :: a -> Alt f a Source

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

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

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

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

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

Since: base-4.17.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> Generically1 f a Source

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

liftA2 :: (a -> b -> c) -> Generically1 f a -> Generically1 f b -> Generically1 f c Source

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

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

Applicative f => Applicative (Rec1 f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> Rec1 f a Source

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

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

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

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

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

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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

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

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

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

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

pure :: a -> Product f g a Source

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

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

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

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

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

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

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

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

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

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

Monoid c => Applicative (K1 i c :: Type -> Type) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> K1 i c a Source

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

liftA2 :: (a -> b -> c0) -> K1 i c a -> K1 i c b -> K1 i c c0 Source

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

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

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

Since: base-4.14.0.0

Instance details

Defined in GHC.Base

Methods

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

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

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

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

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

Applicative ((->) r) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

pure :: a -> r -> a Source

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

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

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

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

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

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Compose

Methods

pure :: a -> Compose f g a Source

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

liftA2 :: (a -> b -> c) -> Compose f g a -> Compose f g b -> Compose f g c Source

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

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

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

pure :: a -> (f :.: g) a Source

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

liftA2 :: (a -> b -> c) -> (f :.: g) a -> (f :.: g) b -> (f :.: g) c Source

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

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

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

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

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

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

(*>) :: M1 i c f 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 a Source

class Applicative f => Alternative f where Source

A monoid on applicative functors.

If defined, some and many should be the least solutions of the equations:

Minimal complete definition

empty, (<|>)

Methods

empty :: f a Source

The identity of <|>

(<|>) :: f a -> f a -> f a infixl 3 Source

An associative binary operation

some :: f a -> f [a] Source

One or more.

many :: f a -> f [a] Source

Zero or more.

Instances
Instances details
Alternative ZipList Source

Since: base-4.11.0.0

Instance details

Defined in Control.Applicative

Methods

empty :: ZipList a Source

(<|>) :: ZipList a -> ZipList a -> ZipList a Source

some :: ZipList a -> ZipList [a] Source

many :: ZipList a -> ZipList [a] Source

Alternative STM Source

Since: base-4.8.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

empty :: STM a Source

(<|>) :: STM a -> STM a -> STM a Source

some :: STM a -> STM [a] Source

many :: STM a -> STM [a] Source

Alternative ReadP Source

Since: base-4.6.0.0

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

empty :: ReadP a Source

(<|>) :: ReadP a -> ReadP a -> ReadP a Source

some :: ReadP a -> ReadP [a] Source

many :: ReadP a -> ReadP [a] Source

Alternative ReadPrec Source

Since: base-4.6.0.0

Instance details

Defined in Text.ParserCombinators.ReadPrec

Alternative IO Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

empty :: IO a Source

(<|>) :: IO a -> IO a -> IO a Source

some :: IO a -> IO [a] Source

many :: IO a -> IO [a] Source

Alternative Maybe Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

empty :: Maybe a Source

(<|>) :: Maybe a -> Maybe a -> Maybe a Source

some :: Maybe a -> Maybe [a] Source

many :: Maybe a -> Maybe [a] Source

Alternative [] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

empty :: [a] Source

(<|>) :: [a] -> [a] -> [a] Source

some :: [a] -> [[a]] Source

many :: [a] -> [[a]] Source

MonadPlus m => Alternative (WrappedMonad m) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

ArrowPlus a => Alternative (ArrowMonad a) Source

Since: base-4.6.0.0

Instance details

Defined in Control.Arrow

Methods

empty :: ArrowMonad a a0 Source

(<|>) :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 Source

some :: ArrowMonad a a0 -> ArrowMonad a [a0] Source

many :: ArrowMonad a a0 -> ArrowMonad a [a0] Source

Alternative (Proxy :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

empty :: Proxy a Source

(<|>) :: Proxy a -> Proxy a -> Proxy a Source

some :: Proxy a -> Proxy [a] Source

many :: Proxy a -> Proxy [a] Source

Alternative (U1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: U1 a Source

(<|>) :: U1 a -> U1 a -> U1 a Source

some :: U1 a -> U1 [a] Source

many :: U1 a -> U1 [a] Source

(ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b) Source

Since: base-2.1

Instance details

Defined in Control.Applicative

Methods

empty :: WrappedArrow a b a0 Source

(<|>) :: WrappedArrow a b a0 -> WrappedArrow a b a0 -> WrappedArrow a b a0 Source

some :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Source

many :: WrappedArrow a b a0 -> WrappedArrow a b [a0] Source

Alternative m => Alternative (Kleisli m a) Source

Since: base-4.14.0.0

Instance details

Defined in Control.Arrow

Methods

empty :: Kleisli m a a0 Source

(<|>) :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 Source

some :: Kleisli m a a0 -> Kleisli m a [a0] Source

many :: Kleisli m a a0 -> Kleisli m a [a0] Source

Alternative f => Alternative (Ap f) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

empty :: Ap f a Source

(<|>) :: Ap f a -> Ap f a -> Ap f a Source

some :: Ap f a -> Ap f [a] Source

many :: Ap f a -> Ap f [a] Source

Alternative f => Alternative (Alt f) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

empty :: Alt f a Source

(<|>) :: Alt f a -> Alt f a -> Alt f a Source

some :: Alt f a -> Alt f [a] Source

many :: Alt f a -> Alt f [a] Source

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

Since: base-4.17.0.0

Instance details

Defined in GHC.Generics

Alternative f => Alternative (Rec1 f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: Rec1 f a Source

(<|>) :: Rec1 f a -> Rec1 f a -> Rec1 f a Source

some :: Rec1 f a -> Rec1 f [a] Source

many :: Rec1 f a -> Rec1 f [a] Source

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

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

empty :: Product f g a Source

(<|>) :: Product f g a -> Product f g a -> Product f g a Source

some :: Product f g a -> Product f g [a] Source

many :: Product f g a -> Product f g [a] Source

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: (f :*: g) a Source

(<|>) :: (f :*: g) a -> (f :*: g) a -> (f :*: g) a Source

some :: (f :*: g) a -> (f :*: g) [a] Source

many :: (f :*: g) a -> (f :*: g) [a] Source

(Alternative f, Applicative g) => Alternative (Compose f g) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Compose

Methods

empty :: Compose f g a Source

(<|>) :: Compose f g a -> Compose f g a -> Compose f g a Source

some :: Compose f g a -> Compose f g [a] Source

many :: Compose f g a -> Compose f g [a] Source

(Alternative f, Applicative g) => Alternative (f :.: g) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: (f :.: g) a Source

(<|>) :: (f :.: g) a -> (f :.: g) a -> (f :.: g) a Source

some :: (f :.: g) a -> (f :.: g) [a] Source

many :: (f :.: g) a -> (f :.: g) [a] Source

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

empty :: M1 i c f a Source

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

some :: M1 i c f a -> M1 i c f [a] Source

many :: M1 i c f a -> M1 i c f [a] Source

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 (Alternative m, Monad m) => MonadPlus m where Source

Monads that also support choice and failure.

Minimal complete definition

Nothing

Methods

mzero :: m a Source

The identity of mplus. It should also satisfy the equations

mzero >>= f  =  mzero
v >> mzero   =  mzero

The default definition is

mzero = empty

mplus :: m a -> m a -> m a Source

An associative operation. The default definition is

mplus = (<|>)
Instances
Instances details
MonadPlus STM Source

Since: base-4.3.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

mzero :: STM a Source

mplus :: STM a -> STM a -> STM a Source

MonadPlus ReadP Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadP

Methods

mzero :: ReadP a Source

mplus :: ReadP a -> ReadP a -> ReadP a Source

MonadPlus ReadPrec Source

Since: base-2.1

Instance details

Defined in Text.ParserCombinators.ReadPrec

Methods

mzero :: ReadPrec a Source

mplus :: ReadPrec a -> ReadPrec a -> ReadPrec a Source

MonadPlus IO Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

mzero :: IO a Source

mplus :: IO a -> IO a -> IO a Source

MonadPlus Maybe Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mzero :: Maybe a Source

mplus :: Maybe a -> Maybe a -> Maybe a Source

MonadPlus [] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mzero :: [a] Source

mplus :: [a] -> [a] -> [a] Source

(ArrowApply a, ArrowPlus a) => MonadPlus (ArrowMonad a) Source

Since: base-4.6.0.0

Instance details

Defined in Control.Arrow

Methods

mzero :: ArrowMonad a a0 Source

mplus :: ArrowMonad a a0 -> ArrowMonad a a0 -> ArrowMonad a a0 Source

MonadPlus (Proxy :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

mzero :: Proxy a Source

mplus :: Proxy a -> Proxy a -> Proxy a Source

MonadPlus (U1 :: Type -> Type) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: U1 a Source

mplus :: U1 a -> U1 a -> U1 a Source

MonadPlus m => MonadPlus (Kleisli m a) Source

Since: base-4.14.0.0

Instance details

Defined in Control.Arrow

Methods

mzero :: Kleisli m a a0 Source

mplus :: Kleisli m a a0 -> Kleisli m a a0 -> Kleisli m a a0 Source

MonadPlus f => MonadPlus (Ap f) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

mzero :: Ap f a Source

mplus :: Ap f a -> Ap f a -> Ap f a Source

MonadPlus f => MonadPlus (Alt f) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

mzero :: Alt f a Source

mplus :: Alt f a -> Alt f a -> Alt f a Source

MonadPlus f => MonadPlus (Rec1 f) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: Rec1 f a Source

mplus :: Rec1 f a -> Rec1 f a -> Rec1 f a Source

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

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Product

Methods

mzero :: Product f g a Source

mplus :: Product f g a -> Product f g a -> Product f g a Source

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: (f :*: g) a Source

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

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

Since: base-4.9.0.0

Instance details

Defined in GHC.Generics

Methods

mzero :: M1 i c f a Source

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

type String = [Char] Source

A String is a list of characters. String constants in Haskell are values of type String.

See Data.List for operations on lists.

class Semigroup a => Monoid a where Source

The class of monoids (types with an associative binary operation that has an identity). Instances should satisfy the following:

Right identity
x <> mempty = x
Left identity
mempty <> x = x
Associativity
x <> (y <> z) = (x <> y) <> z (Semigroup law)
Concatenation
mconcat = foldr (<>) mempty

The method names refer to the monoid of lists under concatenation, but there are many other instances.

Some types can be viewed as a monoid in more than one way, e.g. both addition and multiplication on numbers. In such cases we often define newtypes and make those instances of Monoid, e.g. Sum and Product.

NOTE: Semigroup is a superclass of Monoid since base-4.11.0.0.

Minimal complete definition

mempty

Methods

mempty :: a Source

Identity of mappend

>>> "Hello world" <> mempty
"Hello world"

mappend :: a -> a -> a Source

An associative operation

NOTE: This method is redundant and has the default implementation mappend = (<>) since base-4.11.0.0. Should it be implemented manually, since mappend is a synonym for (<>), it is expected that the two functions are defined the same way. In a future GHC release mappend will be removed from Monoid.

mconcat :: [a] -> a Source

Fold a list using the monoid.

For most types, the default definition for mconcat will be used, but the function is included in the class definition so that an optimized version can be provided for specific types.

>>> mconcat ["Hello", " ", "Haskell", "!"]
"Hello Haskell!"
Instances
Instances details
Monoid ByteArray Source

Since: base-4.17.0.0

Instance details

Defined in Data.Array.Byte

Monoid All Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: All Source

mappend :: All -> All -> All Source

mconcat :: [All] -> All Source

Monoid Any Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: Any Source

mappend :: Any -> Any -> Any Source

mconcat :: [Any] -> Any Source

Monoid Event Source

Since: base-4.4.0.0

Instance details

Defined in GHC.Event.Internal.Types

Monoid Lifetime Source

mappend takes the longer of two lifetimes.

Since: base-4.8.0.0

Instance details

Defined in GHC.Event.Internal.Types

Monoid Ordering Source

Since: base-2.1

Instance details

Defined in GHC.Base

Monoid () Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: () Source

mappend :: () -> () -> () Source

mconcat :: [()] -> () Source

FiniteBits a => Monoid (And a) Source

This constraint is arguably too strong. However, as some types (such as Natural) have undefined complement, this is the only safe choice.

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

mempty :: And a Source

mappend :: And a -> And a -> And a Source

mconcat :: [And a] -> And a Source

FiniteBits a => Monoid (Iff a) Source

This constraint is arguably too strong. However, as some types (such as Natural) have undefined complement, this is the only safe choice.

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

mempty :: Iff a Source

mappend :: Iff a -> Iff a -> Iff a Source

mconcat :: [Iff a] -> Iff a Source

Bits a => Monoid (Ior a) Source

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

mempty :: Ior a Source

mappend :: Ior a -> Ior a -> Ior a Source

mconcat :: [Ior a] -> Ior a Source

Bits a => Monoid (Xor a) Source

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

mempty :: Xor a Source

mappend :: Xor a -> Xor a -> Xor a Source

mconcat :: [Xor a] -> Xor a Source

Monoid (Comparison a) Source

mempty on comparisons always returns EQ. Without newtypes this equals pure (pure EQ).

mempty :: Comparison a
mempty = Comparison _ _ -> EQ
Instance details

Defined in Data.Functor.Contravariant

Monoid (Equivalence a) Source

mempty on equivalences always returns True. Without newtypes this equals pure (pure True).

mempty :: Equivalence a
mempty = Equivalence _ _ -> True
Instance details

Defined in Data.Functor.Contravariant

Monoid (Predicate a) Source

mempty on predicates always returns True. Without newtypes this equals pure True.

mempty :: Predicate a
mempty = _ -> True
Instance details

Defined in Data.Functor.Contravariant

Monoid a => Monoid (Identity a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Monoid (First a) Source

Since: base-2.1

Instance details

Defined in Data.Monoid

Methods

mempty :: First a Source

mappend :: First a -> First a -> First a Source

mconcat :: [First a] -> First a Source

Monoid (Last a) Source

Since: base-2.1

Instance details

Defined in Data.Monoid

Methods

mempty :: Last a Source

mappend :: Last a -> Last a -> Last a Source

mconcat :: [Last a] -> Last a Source

Monoid a => Monoid (Down a) Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

mempty :: Down a Source

mappend :: Down a -> Down a -> Down a Source

mconcat :: [Down a] -> Down a Source

(Ord a, Bounded a) => Monoid (Max a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

mempty :: Max a Source

mappend :: Max a -> Max a -> Max a Source

mconcat :: [Max a] -> Max a Source

(Ord a, Bounded a) => Monoid (Min a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

mempty :: Min a Source

mappend :: Min a -> Min a -> Min a Source

mconcat :: [Min a] -> Min a Source

Monoid m => Monoid (WrappedMonoid m) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Monoid a => Monoid (Dual a) Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: Dual a Source

mappend :: Dual a -> Dual a -> Dual a Source

mconcat :: [Dual a] -> Dual a Source

Monoid (Endo a) Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: Endo a Source

mappend :: Endo a -> Endo a -> Endo a Source

mconcat :: [Endo a] -> Endo a Source

Num a => Monoid (Product a) Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Num a => Monoid (Sum a) Source

Since: base-2.1

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: Sum a Source

mappend :: Sum a -> Sum a -> Sum a Source

mconcat :: [Sum a] -> Sum a Source

Monoid a => Monoid (STM a) Source

Since: base-4.17.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

mempty :: STM a Source

mappend :: STM a -> STM a -> STM a Source

mconcat :: [STM a] -> STM a Source

(Generic a, Monoid (Rep a ())) => Monoid (Generically a) Source

Since: base-4.17.0.0

Instance details

Defined in GHC.Generics

Monoid p => Monoid (Par1 p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: Par1 p Source

mappend :: Par1 p -> Par1 p -> Par1 p Source

mconcat :: [Par1 p] -> Par1 p Source

Monoid a => Monoid (IO a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

mempty :: IO a Source

mappend :: IO a -> IO a -> IO a Source

mconcat :: [IO a] -> IO a Source

Semigroup a => Monoid (Maybe a) Source

Lift a semigroup into Maybe forming a Monoid according to http://en.wikipedia.org/wiki/Monoid: "Any semigroup S may be turned into a monoid simply by adjoining an element e not in S and defining e*e = e and e*s = s = s*e for all s ∈ S."

Since 4.11.0: constraint on inner a value generalised from Monoid to Semigroup.

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: Maybe a Source

mappend :: Maybe a -> Maybe a -> Maybe a Source

mconcat :: [Maybe a] -> Maybe a Source

Monoid a => Monoid (a) Source

Since: base-4.15

Instance details

Defined in GHC.Base

Methods

mempty :: (a) Source

mappend :: (a) -> (a) -> (a) Source

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

Monoid [a] Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: [a] Source

mappend :: [a] -> [a] -> [a] Source

mconcat :: [[a]] -> [a] Source

Monoid a => Monoid (Op a b) Source

mempty @(Op a b) without newtypes is mempty @(b->a) = _ -> mempty.

mempty :: Op a b
mempty = Op _ -> mempty
Instance details

Defined in Data.Functor.Contravariant

Methods

mempty :: Op a b Source

mappend :: Op a b -> Op a b -> Op a b Source

mconcat :: [Op a b] -> Op a b Source

Monoid (Proxy s) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Proxy

Methods

mempty :: Proxy s Source

mappend :: Proxy s -> Proxy s -> Proxy s Source

mconcat :: [Proxy s] -> Proxy s Source

Monoid (U1 p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: U1 p Source

mappend :: U1 p -> U1 p -> U1 p Source

mconcat :: [U1 p] -> U1 p Source

Monoid a => Monoid (ST s a) Source

Since: base-4.11.0.0

Instance details

Defined in GHC.ST

Methods

mempty :: ST s a Source

mappend :: ST s a -> ST s a -> ST s a Source

mconcat :: [ST s a] -> ST s a Source

Monoid b => Monoid (a -> b) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: a -> b Source

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

mconcat :: [a -> b] -> a -> b Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: (a, b) Source

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

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

Monoid a => Monoid (Const a b) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

mempty :: Const a b Source

mappend :: Const a b -> Const a b -> Const a b Source

mconcat :: [Const a b] -> Const a b Source

(Applicative f, Monoid a) => Monoid (Ap f a) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

mempty :: Ap f a Source

mappend :: Ap f a -> Ap f a -> Ap f a Source

mconcat :: [Ap f a] -> Ap f a Source

Alternative f => Monoid (Alt f a) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

mempty :: Alt f a Source

mappend :: Alt f a -> Alt f a -> Alt f a Source

mconcat :: [Alt f a] -> Alt f a Source

Monoid (f p) => Monoid (Rec1 f p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: Rec1 f p Source

mappend :: Rec1 f p -> Rec1 f p -> Rec1 f p Source

mconcat :: [Rec1 f p] -> Rec1 f p Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: (a, b, c) Source

mappend :: (a, b, c) -> (a, b, c) -> (a, b, c) Source

mconcat :: [(a, b, c)] -> (a, b, c) Source

(Monoid (f a), Monoid (g a)) => Monoid (Product f g a) Source

Since: base-4.16.0.0

Instance details

Defined in Data.Functor.Product

Methods

mempty :: Product f g a Source

mappend :: Product f g a -> Product f g a -> Product f g a Source

mconcat :: [Product f g a] -> Product f g a Source

(Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: (f :*: g) p Source

mappend :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Source

mconcat :: [(f :*: g) p] -> (f :*: g) p Source

Monoid c => Monoid (K1 i c p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: K1 i c p Source

mappend :: K1 i c p -> K1 i c p -> K1 i c p Source

mconcat :: [K1 i c p] -> K1 i c p Source

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

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: (a, b, c, d) Source

mappend :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source

mconcat :: [(a, b, c, d)] -> (a, b, c, d) Source

Monoid (f (g a)) => Monoid (Compose f g a) Source

Since: base-4.16.0.0

Instance details

Defined in Data.Functor.Compose

Methods

mempty :: Compose f g a Source

mappend :: Compose f g a -> Compose f g a -> Compose f g a Source

mconcat :: [Compose f g a] -> Compose f g a Source

Monoid (f (g p)) => Monoid ((f :.: g) p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: (f :.: g) p Source

mappend :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Source

mconcat :: [(f :.: g) p] -> (f :.: g) p Source

Monoid (f p) => Monoid (M1 i c f p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

mempty :: M1 i c f p Source

mappend :: M1 i c f p -> M1 i c f p -> M1 i c f p Source

mconcat :: [M1 i c f p] -> M1 i c f p Source

(Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) Source

Since: base-2.1

Instance details

Defined in GHC.Base

Methods

mempty :: (a, b, c, d, e) Source

mappend :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source

mconcat :: [(a, b, c, d, e)] -> (a, b, c, d, e) Source

class Semigroup a where Source

The class of semigroups (types with an associative binary operation).

Instances should satisfy the following:

Associativity
x <> (y <> z) = (x <> y) <> z

Since: base-4.9.0.0

Minimal complete definition

(<>)

Methods

(<>) :: a -> a -> a infixr 6 Source

An associative operation.

>>> [1,2,3] <> [4,5,6]
[1,2,3,4,5,6]

sconcat :: NonEmpty a -> a Source

Reduce a non-empty list with <>

The default definition should be sufficient, but this can be overridden for efficiency.

>>> import Data.List.NonEmpty (NonEmpty (..))
>>> sconcat $ "Hello" :| [" ", "Haskell", "!"]
"Hello Haskell!"

stimes :: Integral b => b -> a -> a Source

Repeat a value n times.

Given that this works on a Semigroup it is allowed to fail if you request 0 or fewer repetitions, and the default definition will do so.

By making this a member of the class, idempotent semigroups and monoids can upgrade this to execute in \(\mathcal{O}(1)\) by picking stimes = stimesIdempotent or stimes = stimesIdempotentMonoid respectively.

>>> stimes 4 [1]
[1,1,1,1]
Instances
Instances details
Semigroup ByteArray Source

Since: base-4.17.0.0

Instance details

Defined in Data.Array.Byte

Semigroup All Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(<>) :: All -> All -> All Source

sconcat :: NonEmpty All -> All Source

stimes :: Integral b => b -> All -> All Source

Semigroup Any Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(<>) :: Any -> Any -> Any Source

sconcat :: NonEmpty Any -> Any Source

stimes :: Integral b => b -> Any -> Any Source

Semigroup Void Source

Since: base-4.9.0.0

Instance details

Defined in Data.Void

Methods

(<>) :: Void -> Void -> Void Source

sconcat :: NonEmpty Void -> Void Source

stimes :: Integral b => b -> Void -> Void Source

Semigroup Event Source

Since: base-4.10.0.0

Instance details

Defined in GHC.Event.Internal.Types

Semigroup Lifetime Source

Since: base-4.10.0.0

Instance details

Defined in GHC.Event.Internal.Types

Semigroup Ordering Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup () Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(<>) :: () -> () -> () Source

sconcat :: NonEmpty () -> () Source

stimes :: Integral b => b -> () -> () Source

Bits a => Semigroup (And a) Source

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

(<>) :: And a -> And a -> And a Source

sconcat :: NonEmpty (And a) -> And a Source

stimes :: Integral b => b -> And a -> And a Source

FiniteBits a => Semigroup (Iff a) Source

This constraint is arguably too strong. However, as some types (such as Natural) have undefined complement, this is the only safe choice.

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

(<>) :: Iff a -> Iff a -> Iff a Source

sconcat :: NonEmpty (Iff a) -> Iff a Source

stimes :: Integral b => b -> Iff a -> Iff a Source

Bits a => Semigroup (Ior a) Source

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

(<>) :: Ior a -> Ior a -> Ior a Source

sconcat :: NonEmpty (Ior a) -> Ior a Source

stimes :: Integral b => b -> Ior a -> Ior a Source

Bits a => Semigroup (Xor a) Source

Since: base-4.16

Instance details

Defined in Data.Bits

Methods

(<>) :: Xor a -> Xor a -> Xor a Source

sconcat :: NonEmpty (Xor a) -> Xor a Source

stimes :: Integral b => b -> Xor a -> Xor a Source

Semigroup (Comparison a) Source

(<>) on comparisons combines results with (<>) @Ordering. Without newtypes this equals liftA2 (liftA2 (<>)).

(<>) :: Comparison a -> Comparison a -> Comparison a
Comparison cmp <> Comparison cmp' = Comparison a a' ->
  cmp a a' <> cmp a a'
Instance details

Defined in Data.Functor.Contravariant

Semigroup (Equivalence a) Source

(<>) on equivalences uses logical conjunction (&&) on the results. Without newtypes this equals liftA2 (liftA2 (&&)).

(<>) :: Equivalence a -> Equivalence a -> Equivalence a
Equivalence equiv <> Equivalence equiv' = Equivalence a b ->
  equiv a b && equiv' a b
Instance details

Defined in Data.Functor.Contravariant

Semigroup (Predicate a) Source

(<>) on predicates uses logical conjunction (&&) on the results. Without newtypes this equals liftA2 (&&).

(<>) :: Predicate a -> Predicate a -> Predicate a
Predicate pred <> Predicate pred' = Predicate a ->
  pred a && pred' a
Instance details

Defined in Data.Functor.Contravariant

Semigroup a => Semigroup (Identity a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Semigroup (First a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Monoid

Methods

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

sconcat :: NonEmpty (First a) -> First a Source

stimes :: Integral b => b -> First a -> First a Source

Semigroup (Last a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Monoid

Methods

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

sconcat :: NonEmpty (Last a) -> Last a Source

stimes :: Integral b => b -> Last a -> Last a Source

Semigroup a => Semigroup (Down a) Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

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

sconcat :: NonEmpty (Down a) -> Down a Source

stimes :: Integral b => b -> Down a -> Down a Source

Semigroup (First a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

sconcat :: NonEmpty (First a) -> First a Source

stimes :: Integral b => b -> First a -> First a Source

Semigroup (Last a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

sconcat :: NonEmpty (Last a) -> Last a Source

stimes :: Integral b => b -> Last a -> Last a Source

Ord a => Semigroup (Max a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

sconcat :: NonEmpty (Max a) -> Max a Source

stimes :: Integral b => b -> Max a -> Max a Source

Ord a => Semigroup (Min a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

sconcat :: NonEmpty (Min a) -> Min a Source

stimes :: Integral b => b -> Min a -> Min a Source

Monoid m => Semigroup (WrappedMonoid m) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Semigroup a => Semigroup (Dual a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

sconcat :: NonEmpty (Dual a) -> Dual a Source

stimes :: Integral b => b -> Dual a -> Dual a Source

Semigroup (Endo a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

(<>) :: Endo a -> Endo a -> Endo a Source

sconcat :: NonEmpty (Endo a) -> Endo a Source

stimes :: Integral b => b -> Endo a -> Endo a Source

Num a => Semigroup (Product a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

sconcat :: NonEmpty (Product a) -> Product a Source

stimes :: Integral b => b -> Product a -> Product a Source

Num a => Semigroup (Sum a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

sconcat :: NonEmpty (Sum a) -> Sum a Source

stimes :: Integral b => b -> Sum a -> Sum a Source

Semigroup a => Semigroup (STM a) Source

Since: base-4.17.0.0

Instance details

Defined in GHC.Conc.Sync

Methods

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

sconcat :: NonEmpty (STM a) -> STM a Source

stimes :: Integral b => b -> STM a -> STM a Source

(Generic a, Semigroup (Rep a ())) => Semigroup (Generically a) Source

Since: base-4.17.0.0

Instance details

Defined in GHC.Generics

Semigroup p => Semigroup (Par1 p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: Par1 p -> Par1 p -> Par1 p Source

sconcat :: NonEmpty (Par1 p) -> Par1 p Source

stimes :: Integral b => b -> Par1 p -> Par1 p Source

Semigroup a => Semigroup (IO a) Source

Since: base-4.10.0.0

Instance details

Defined in GHC.Base

Methods

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

sconcat :: NonEmpty (IO a) -> IO a Source

stimes :: Integral b => b -> IO a -> IO a Source

Semigroup (NonEmpty a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Semigroup a => Semigroup (Maybe a) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

sconcat :: NonEmpty (Maybe a) -> Maybe a Source

stimes :: Integral b => b -> Maybe a -> Maybe a Source

Semigroup a => Semigroup (a) Source

Since: base-4.15

Instance details

Defined in GHC.Base

Methods

(<>) :: (a) -> (a) -> (a) Source

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

stimes :: Integral b => b -> (a) -> (a) Source

Semigroup [a] Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

sconcat :: NonEmpty [a] -> [a] Source

stimes :: Integral b => b -> [a] -> [a] Source

Semigroup (Either a b) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Either

Methods

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

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

stimes :: Integral b0 => b0 -> Either a b -> Either a b Source

Semigroup a => Semigroup (Op a b) Source

(<>) @(Op a b) without newtypes is (<>) @(b->a) = liftA2 (<>). This lifts the Semigroup operation (<>) over the output of a.

(<>) :: Op a b -> Op a b -> Op a b
Op f <> Op g = Op a -> f a <> g a
Instance details

Defined in Data.Functor.Contravariant

Methods

(<>) :: Op a b -> Op a b -> Op a b Source

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

stimes :: Integral b0 => b0 -> Op a b -> Op a b Source

Semigroup (Proxy s) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Proxy

Methods

(<>) :: Proxy s -> Proxy s -> Proxy s Source

sconcat :: NonEmpty (Proxy s) -> Proxy s Source

stimes :: Integral b => b -> Proxy s -> Proxy s Source

Semigroup (U1 p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: U1 p -> U1 p -> U1 p Source

sconcat :: NonEmpty (U1 p) -> U1 p Source

stimes :: Integral b => b -> U1 p -> U1 p Source

Semigroup (V1 p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: V1 p -> V1 p -> V1 p Source

sconcat :: NonEmpty (V1 p) -> V1 p Source

stimes :: Integral b => b -> V1 p -> V1 p Source

Semigroup a => Semigroup (ST s a) Source

Since: base-4.11.0.0

Instance details

Defined in GHC.ST

Methods

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

sconcat :: NonEmpty (ST s a) -> ST s a Source

stimes :: Integral b => b -> ST s a -> ST s a Source

Semigroup b => Semigroup (a -> b) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

stimes :: Integral b0 => b0 -> (a -> b) -> a -> b Source

(Semigroup a, Semigroup b) => Semigroup (a, b) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

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

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

stimes :: Integral b0 => b0 -> (a, b) -> (a, b) Source

Semigroup a => Semigroup (Const a b) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

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

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

stimes :: Integral b0 => b0 -> Const a b -> Const a b Source

(Applicative f, Semigroup a) => Semigroup (Ap f a) Source

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

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

sconcat :: NonEmpty (Ap f a) -> Ap f a Source

stimes :: Integral b => b -> Ap f a -> Ap f a Source

Alternative f => Semigroup (Alt f a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

sconcat :: NonEmpty (Alt f a) -> Alt f a Source

stimes :: Integral b => b -> Alt f a -> Alt f a Source

Semigroup (f p) => Semigroup (Rec1 f p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: Rec1 f p -> Rec1 f p -> Rec1 f p Source

sconcat :: NonEmpty (Rec1 f p) -> Rec1 f p Source

stimes :: Integral b => b -> Rec1 f p -> Rec1 f p Source

(Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(<>) :: (a, b, c) -> (a, b, c) -> (a, b, c) Source

sconcat :: NonEmpty (a, b, c) -> (a, b, c) Source

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

(Semigroup (f a), Semigroup (g a)) => Semigroup (Product f g a) Source

Since: base-4.16.0.0

Instance details

Defined in Data.Functor.Product

Methods

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

sconcat :: NonEmpty (Product f g a) -> Product f g a Source

stimes :: Integral b => b -> Product f g a -> Product f g a Source

(Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: (f :*: g) p -> (f :*: g) p -> (f :*: g) p Source

sconcat :: NonEmpty ((f :*: g) p) -> (f :*: g) p Source

stimes :: Integral b => b -> (f :*: g) p -> (f :*: g) p Source

Semigroup c => Semigroup (K1 i c p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: K1 i c p -> K1 i c p -> K1 i c p Source

sconcat :: NonEmpty (K1 i c p) -> K1 i c p Source

stimes :: Integral b => b -> K1 i c p -> K1 i c p Source

(Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(<>) :: (a, b, c, d) -> (a, b, c, d) -> (a, b, c, d) Source

sconcat :: NonEmpty (a, b, c, d) -> (a, b, c, d) Source

stimes :: Integral b0 => b0 -> (a, b, c, d) -> (a, b, c, d) Source

Semigroup (f (g a)) => Semigroup (Compose f g a) Source

Since: base-4.16.0.0

Instance details

Defined in Data.Functor.Compose

Methods

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

sconcat :: NonEmpty (Compose f g a) -> Compose f g a Source

stimes :: Integral b => b -> Compose f g a -> Compose f g a Source

Semigroup (f (g p)) => Semigroup ((f :.: g) p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: (f :.: g) p -> (f :.: g) p -> (f :.: g) p Source

sconcat :: NonEmpty ((f :.: g) p) -> (f :.: g) p Source

stimes :: Integral b => b -> (f :.: g) p -> (f :.: g) p Source

Semigroup (f p) => Semigroup (M1 i c f p) Source

Since: base-4.12.0.0

Instance details

Defined in GHC.Generics

Methods

(<>) :: M1 i c f p -> M1 i c f p -> M1 i c f p Source

sconcat :: NonEmpty (M1 i c f p) -> M1 i c f p Source

stimes :: Integral b => b -> M1 i c f p -> M1 i c f p Source

(Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e) Source

Since: base-4.9.0.0

Instance details

Defined in GHC.Base

Methods

(<>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) Source

sconcat :: NonEmpty (a, b, c, d, e) -> (a, b, c, d, e) Source

stimes :: Integral b0 => b0 -> (a, b, c, d, e) -> (a, b, c, d, e) Source

data Opaque Source

Constructors

forall a. O a

ord :: Char -> Int Source

The fromEnum method restricted to the type Char.

(.) :: (b -> c) -> (a -> b) -> a -> c infixr 9 Source

Function composition.

(<**>) :: Applicative f => f a -> f (a -> b) -> f b infixl 4 Source

A variant of <*> with the arguments reversed.

liftA :: Applicative f => (a -> b) -> f a -> f b Source

Lift a function to actions. Equivalent to Functor's fmap but implemented using only Applicative's methods: `liftA f a = pure f * a`

As such this function may be used to implement a Functor instance from an Applicative one.

liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d Source

Lift a ternary function to actions.

id :: a -> a Source

Identity function.

id x = x

when :: Applicative f => Bool -> f () -> f () Source

Conditional execution of Applicative expressions. For example,

when debug (putStrLn "Debugging")

will output the string Debugging if the Boolean value debug is True, and otherwise do nothing.

assert :: Bool -> a -> a Source

If the first argument evaluates to True, then the result is the second argument. Otherwise an AssertionFailed exception is raised, containing a String with the source file and line number of the call to assert.

Assertions can normally be turned on or off with a compiler flag (for GHC, assertions are normally on unless optimisation is turned on with -O or the -fignore-asserts option is given). When assertions are turned off, the first argument to assert is ignored, and the second argument is returned as the result.

mapM :: Monad m => (a -> m b) -> [a] -> m [b] Source

mapM f is equivalent to sequence . map f.

sequence :: Monad m => [m a] -> m [a] Source

Evaluate each action in the sequence from left to right, and collect the results.

(=<<) :: Monad m => (a -> m b) -> m a -> m b infixr 1 Source

Same as >>=, but with the arguments interchanged.

join :: Monad m => m (m a) -> m a Source

The join function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level.

'join bss' can be understood as the do expression

do bs <- bss
   bs
Examples
Expand

A common use of join is to run an IO computation returned from an STM transaction, since STM transactions can't perform IO directly. Recall that

atomically :: STM a -> IO a

is used to run STM transactions atomically. So, by specializing the types of atomically and join to

atomically :: STM (IO b) -> IO (IO b)
join       :: IO (IO b)  -> IO b

we can compose them as

join . atomically :: STM (IO b) -> IO b

to run an STM transaction and the IO action it returns.

liftM :: Monad m => (a1 -> r) -> m a1 -> m r Source

Promote a function to a monad.

liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r Source

Promote a function to a monad, scanning the monadic arguments from left to right. For example,

liftM2 (+) [0,1] [0,2] = [0,2,1,3]
liftM2 (+) (Just 1) Nothing = Nothing

liftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r Source

Promote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2).

liftM4 :: Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m r Source

Promote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2).

liftM5 :: Monad m => (a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r Source

Promote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2).

ap :: Monad m => m (a -> b) -> m a -> m b Source

In many situations, the liftM operations can be replaced by uses of ap, which promotes function application.

return f `ap` x1 `ap` ... `ap` xn

is equivalent to

liftMn f x1 x2 ... xn

failIO :: String -> IO a Source

($) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 Source

Application operator. This operator is redundant, since ordinary application (f x) means the same as (f $ x). However, $ has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:

f $ g $ h x  =  f (g (h x))

It is also useful in higher-order situations, such as map ($ 0) xs, or zipWith ($) fs xs.

Note that ($) is representation-polymorphic in its result type, so that foo $ True where foo :: Bool -> Int# is well-typed.

otherwise :: Bool Source

otherwise is defined as the value True. It helps to make guards more readable. eg.

 f x | x < 0     = ...
     | otherwise = ...

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

foldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left:

foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)

const :: a -> b -> a Source

const x y always evaluates to x, ignoring its second argument.

>>> const 42 "hello"
42
>>> map (const 42) [0..3]
[42,42,42,42]

flip :: (a -> b -> c) -> b -> a -> c Source

flip f takes its (first) two arguments in the reverse order of f.

>>> flip (++) "hello" "world"
"worldhello"

(++) :: [a] -> [a] -> [a] infixr 5 Source

Append two lists, i.e.,

[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
[x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]

If the first list is not finite, the result is the first list.

WARNING: This function takes linear time in the number of elements of the first list.

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

\(\mathcal{O}(n)\). map f xs is the list obtained by applying f to each element of xs, i.e.,

map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
map f [x1, x2, ...] == [f x1, f x2, ...]
>>> map (+1) [1, 2, 3]
[2,3,4]

($!) :: forall r a (b :: TYPE r). (a -> b) -> a -> b infixr 0 Source

Strict (call-by-value) application operator. It takes a function and an argument, evaluates the argument to weak head normal form (WHNF), then calls the function with that value.

shiftL# :: Word# -> Int# -> Word# Source

Shift the argument left by the specified number of bits (which must be non-negative).

shiftRL# :: Word# -> Int# -> Word# Source

Shift the argument right by the specified number of bits (which must be non-negative). The RL means "right, logical" (as opposed to RA for arithmetic) (although an arithmetic right shift wouldn't make sense for Word#)

iShiftL# :: Int# -> Int# -> Int# Source

Shift the argument left by the specified number of bits (which must be non-negative).

iShiftRA# :: Int# -> Int# -> Int# Source

Shift the argument right (signed) by the specified number of bits (which must be non-negative). The RA means "right, arithmetic" (as opposed to RL for logical)

iShiftRL# :: Int# -> Int# -> Int# Source

Shift the argument right (unsigned) by the specified number of bits (which must be non-negative). The RL means "right, logical" (as opposed to RA for arithmetic)

build :: forall a. (forall b. (a -> b -> b) -> b -> b) -> [a] Source

A list producer that can be fused with foldr. This function is merely

   build g = g (:) []

but GHC's simplifier will transform an expression of the form foldr k z (build g), which may arise after inlining, to g k z, which avoids producing an intermediate list.

augment :: forall a. (forall b. (a -> b -> b) -> b -> b) -> [a] -> [a] Source

A list producer that can be fused with foldr. This function is merely

   augment g xs = g (:) xs

but GHC's simplifier will transform an expression of the form foldr k z (augment g xs), which may arise after inlining, to g k (foldr k z xs), which avoids producing an intermediate list.

breakpoint :: a -> a Source

breakpointCond :: Bool -> a -> a Source

unIO :: IO a -> State# RealWorld -> (# State# RealWorld, a #) Source

until :: (a -> Bool) -> (a -> a) -> a -> a Source

until p f yields the result of applying f until p holds.

asTypeOf :: a -> a -> a Source

asTypeOf is a type-restricted version of const. It is usually used as an infix operator, and its typing forces its first argument (which is usually overloaded) to have the same type as the second.

eqString :: String -> String -> Bool Source

This String equality predicate is used when desugaring pattern-matches against strings.

returnIO :: a -> IO a Source

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

thenIO :: IO a -> IO b -> IO b Source

mapFB :: (elt -> lst -> lst) -> (a -> elt) -> a -> lst -> lst Source

unsafeChr :: Int -> Char Source

maxInt :: Int Source

minInt :: Int Source

getTag :: a -> Int# Source

Returns the tag of a constructor application; this function is used by the deriving code for Eq, Ord and Enum.

quotInt :: Int -> Int -> Int Source

Used to implement quot for the Integral typeclass. This performs integer division on its two parameters, truncated towards zero.

Example
Expand
>>> quotInt 10 2
5
>>> quot 10 2
5

remInt :: Int -> Int -> Int Source

Used to implement rem for the Integral typeclass. This gives the remainder after integer division of its two parameters, satisfying

((x `quot` y) * y) + (x `rem` y) == x
Example
Expand
>>> remInt 3 2
1
>>> rem 3 2
1

divInt :: Int -> Int -> Int Source

Used to implement div for the Integral typeclass. This performs integer division on its two parameters, truncated towards negative infinity.

Example
Expand
>>> 10 `divInt` 2
5
>>> 10 `div` 2
5

modInt :: Int -> Int -> Int Source

Used to implement mod for the Integral typeclass. This performs the modulo operation, satisfying

((x `div` y) * y) + (x `mod` y) == x
Example
Expand
>>> 7 `modInt` 3
1
>>> 7 `mod` 3
1

quotRemInt :: Int -> Int -> (Int, Int) Source

Used to implement quotRem for the Integral typeclass. This gives a tuple equivalent to

(quot x y, mod x y)
Example
Expand
>>> quotRemInt 10 2
(5,0)
>>> quotRem 10 2
(5,0)

divModInt :: Int -> Int -> (Int, Int) Source

Used to implement divMod for the Integral typeclass. This gives a tuple equivalent to

(div x y, mod x y)
Example
Expand
>>> divModInt 10 2
(5,0)
>>> divMod 10 2
(5,0)

shift_mask :: Int# -> Int# -> Int# Source

This function is used to implement branchless shifts. If the number of bits to shift is greater than or equal to the type size in bits, then the shift must return 0. Instead of doing a test, we use a mask obtained via this function which is branchless too.

shift_mask m b | b < m = 0xFF..FF | otherwise = 0

module GHC.Classes

module GHC.CString

module GHC.Magic

module GHC.Magic.Dict

module GHC.Types

module GHC.Prim

module GHC.Prim.Ext

module GHC.Prim.PtrEq

module GHC.Err

module GHC.Maybe

© 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/GHC-Base.html