| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
Prelude
Synopsis
- ($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b
 - class IsList l where
 - class Eq a where
 - class Applicative m => Monad (m :: Type -> Type) where
- (>>=) :: m a -> (a -> m b) -> m b
 
 - class Functor (f :: Type -> Type) where
- fmap :: (a -> b) -> f a -> f b
 
 - class Eq a => Ord a where
 - class Show a
 - class Functor f => Applicative (f :: Type -> Type) where
 - class Foldable (t :: Type -> Type)
 - class (Functor t, Foldable t) => Traversable (t :: Type -> Type) where
- traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
 
 - class Generic a
 - class Semigroup a where
- (<>) :: a -> a -> a
 
 - class Semigroup a => Monoid a where
- mempty :: a
 
 - data Bool
 - data Maybe a
 - data Ordering = EQ
 - data Either a b
 - type Type = Type
 - type family Item l
 - newtype Identity a = Identity {
- runIdentity :: a
 
 - either :: (a -> c) -> (b -> c) -> Either a b -> c
 - mapMaybe :: (a -> Maybe b) -> [a] -> [b]
 - fromMaybe :: a -> Maybe a -> a
 - maybe :: b -> (a -> b) -> Maybe a -> b
 - on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
 - (<&>) :: Functor f => f a -> (a -> b) -> f b
 - (<$>) :: Functor f => (a -> b) -> f a -> f b
 - (.) :: (b -> c) -> (a -> b) -> a -> c
 - const :: a -> b -> a
 - (=<<) :: Monad m => (a -> m b) -> m a -> m b
 - (<|>) :: Alternative f => f a -> f a -> f a
 - (&&) :: Bool -> Bool -> Bool
 - (||) :: Bool -> Bool -> Bool
 - not :: Bool -> Bool
 - data Map k a
 - data Seq a
 - data Set a
 - class NFData a
 - class Eq a => Hashable a
 - _1 :: Field1 s t a b => Lens s t a b
 - _2 :: Field2 s t a b => Lens s t a b
 - adjoin :: forall k l (is :: IxList) s a (js :: IxList). (Is k A_Traversal, Is l A_Traversal) => Optic' k is s a -> Optic' l js s a -> Traversal' s a
 - traversed :: Traversable t => Traversal (t a) (t b) a b
 - traverseOf :: forall k f (is :: IxList) s t a b. (Is k A_Traversal, Applicative f) => Optic k is s t a b -> (a -> f b) -> s -> f t
 - traversalVL :: TraversalVL s t a b -> Traversal s t a b
 - type Traversal s t a b = Optic A_Traversal NoIx s t a b
 - type Traversal' s a = Optic' A_Traversal NoIx s a
 - set :: forall k (is :: IxList) s t a b. Is k A_Setter => Optic k is s t a b -> b -> s -> t
 - over :: forall k (is :: IxList) s t a b. Is k A_Setter => Optic k is s t a b -> (a -> b) -> s -> t
 - pattern Empty :: AsEmpty a => a
 - _Empty :: AsEmpty a => Prism' a ()
 - coerced :: (Coercible s a, Coercible t b) => Iso s t a b
 - simple :: Iso' a a
 - equality :: (s ~ a, t ~ b) => Iso s t a b
 - iso :: (s -> a) -> (b -> t) -> Iso s t a b
 - type Iso s t a b = Optic An_Iso NoIx s t a b
 - type Iso' s a = Optic' An_Iso NoIx s a
 - review :: forall k (is :: IxList) t b. Is k A_Review => Optic' k is t b -> b -> t
 - re :: forall (is :: IxList) s t a b. (ReversibleOptic k, AcceptsEmptyIndices "re" is) => Optic k is s t a b -> Optic (ReversedOptic k) is b a t s
 - _Right :: Prism (Either a b) (Either a c) b c
 - _Left :: Prism (Either a b) (Either c b) a c
 - _Just :: Prism (Maybe a) (Maybe b) a b
 - prism' :: (b -> s) -> (s -> Maybe a) -> Prism s s a b
 - type Prism' s a = Optic' A_Prism NoIx s a
 - lens :: (s -> a) -> (s -> b -> t) -> Lens s t a b
 - type Lens s t a b = Optic A_Lens NoIx s t a b
 - type Lens' s a = Optic' A_Lens NoIx s a
 - afailing :: forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a
 - afolding :: (s -> Maybe a) -> AffineFold s a
 - preview :: forall k (is :: IxList) s a. Is k An_AffineFold => Optic' k is s a -> s -> Maybe a
 - type AffineFold s a = Optic' An_AffineFold NoIx s a
 - matching :: forall k (is :: IxList) s t a b. Is k An_AffineTraversal => Optic k is s t a b -> s -> Either t a
 - atraversal :: (s -> Either t a) -> (s -> b -> t) -> AffineTraversal s t a b
 - type AffineTraversal s t a b = Optic An_AffineTraversal NoIx s t a b
 - type AffineTraversal' s a = Optic' An_AffineTraversal NoIx s a
 - to :: (s -> a) -> Getter s a
 - view :: forall k (is :: IxList) s a. Is k A_Getter => Optic' k is s a -> s -> a
 - type Getter s a = Optic' A_Getter NoIx s a
 - (%) :: forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b
 - castOptic :: forall destKind srcKind (is :: IxList) s t a b. Is srcKind destKind => Optic srcKind is s t a b -> Optic destKind is s t a b
 - data Optic k (is :: IxList) s t a b
 - type Optic' k (is :: IxList) s a = Optic k is s s a a
 - class Is k l
 - class JoinKinds k l m | k l -> m
 - type OpticKind = Type
 - data An_Iso
 - data A_Lens
 - data An_AffineTraversal
 - data A_Traversal
 - data A_Getter
 - data An_AffineFold
 - data A_Fold
 - type NoIx = '[] :: [Type]
 - data Text
 - mapLookup :: Ord k => k -> Map k a -> Maybe a
 - mapDelete :: Ord k => k -> Map k a -> Map k a
 - mapInsert :: Ord k => k -> a -> Map k a -> Map k a
 - mapFromSet :: (k -> a) -> Set k -> Map k a
 - mapMapEither :: (a -> Either b c) -> Map k a -> (Map k b, Map k c)
 - mapMapMaybe :: (a -> Maybe b) -> Map k a -> Map k b
 - mapKeysSet :: Map k a -> Set k
 - mapUnionWith :: Ord k => (a -> a -> a) -> Map k a -> Map k a -> Map k a
 - mapFilter :: (a -> Bool) -> Map k a -> Map k a
 - mapToList :: Map k a -> [(k, a)]
 - mapFoldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m
 - setMember :: Ord a => a -> Set a -> Bool
 - setInsert :: Ord a => a -> Set a -> Set a
 - setDelete :: Ord a => a -> Set a -> Set a
 - seqWither :: Applicative f => (a -> f (Maybe b)) -> Seq a -> f (Seq b)
 - seqReduceR :: b -> (a -> Seq a -> b) -> Seq a -> b
 - seqConsMaybe :: Maybe a -> Seq a -> Seq a
 - seqFromMaybe :: Maybe a -> Seq a
 - seqSingleton :: Prism' (Seq a) a
 - seqAtMostOne :: Prism' (Seq a) (Maybe a)
 - seqToList :: Seq a -> [a]
 - seqConcat :: Seq (Seq a) -> Seq a
 - textEmpty :: Text
 - textConcat :: Foldable t => t Text -> Text
 - seqAppendAndConcat :: Semigroup a => Seq a -> Seq a -> Seq a
 - seqAppendAndConcatWith :: (a -> a -> Maybe a) -> Seq a -> Seq a -> Seq a
 
Documentation
($) :: forall (r :: RuntimeRep) a (b :: TYPE r). (a -> b) -> a -> b infixr 0 #
Application operator.  This operator is redundant, since ordinary
 application (f x) means the same as (f . However, $ x)$ 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 ,
 or map ($ 0) xs.zipWith ($) fs xs
Note that ( is levity-polymorphic in its result type, so that
 $)foo  where $ Truefoo :: Bool -> Int# is well-typed.
The IsList class and its methods are intended to be used in
   conjunction with the OverloadedLists extension.
Since: base-4.7.0.0
Methods
The fromList function constructs the structure l from the given
   list of Item l
fromListN :: Int -> [Item l] -> l #
The fromListN function takes the input list's length as a hint. Its
   behaviour should be equivalent to fromList. The hint can be used to
   construct the structure l more efficiently compared to fromList. If
   the given hint does not equal to the input list's length the behaviour of
   fromListN is not specified.
The toList function extracts a list of Item l from the structure l.
   It should satisfy fromList . toList = id.
Instances
| IsList CallStack | Be aware that 'fromList . toList = id' only for unfrozen  Since: base-4.9.0.0  | 
| IsList Version | Since: base-4.8.0.0  | 
| IsList [a] | Since: base-4.7.0.0  | 
| IsList (ZipList a) | Since: base-4.15.0.0  | 
| IsList (NonEmpty a) | Since: base-4.9.0.0  | 
| IsList (Seq a) | |
| Ord a => IsList (Set a) | Since: containers-0.5.6.2  | 
| Ord k => IsList (Map k v) | Since: containers-0.5.6.2  | 
The Eq class defines equality (==) and inequality (/=).
 All the basic datatypes exported by the Prelude are instances of Eq,
 and Eq may be derived for any datatype whose constituents are also
 instances of Eq.
The Haskell Report defines no laws for Eq. However, == is customarily
 expected to implement an equivalence relationship where two values comparing
 equal are indistinguishable by "public" functions, with a "public" function
 being one not allowing to see implementation details. For example, for a
 type representing non-normalised natural numbers modulo 100, a "public"
 function doesn't make the difference between 1 and 201. It is expected to
 have the following properties:
Instances
| Eq Bool | |
| Eq Char | |
| Eq Double | Note that due to the presence of  
 Also note that  
  | 
| Eq Float | Note that due to the presence of  
 Also note that  
  | 
| Eq Int | |
| Eq Integer | |
| Eq Ordering | |
| Eq Word | |
| Eq Exp | |
| Eq Match | |
| Eq Clause | |
| Eq Pat | |
| Eq Type | |
| Eq Dec | |
| Eq Name | |
| Eq FunDep | |
| Eq InjectivityAnn | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: InjectivityAnn -> InjectivityAnn -> Bool # (/=) :: InjectivityAnn -> InjectivityAnn -> Bool #  | |
| Eq Overlap | |
| Eq () | |
| Eq TyCon | |
| Eq Module | |
| Eq TrName | |
| Eq SpecConstrAnnotation | Since: base-4.3.0.0  | 
Defined in GHC.Exts Methods (==) :: SpecConstrAnnotation -> SpecConstrAnnotation -> Bool # (/=) :: SpecConstrAnnotation -> SpecConstrAnnotation -> Bool #  | |
| Eq Fixity | Since: base-4.6.0.0  | 
| Eq Associativity | Since: base-4.6.0.0  | 
Defined in GHC.Generics Methods (==) :: Associativity -> Associativity -> Bool # (/=) :: Associativity -> Associativity -> Bool #  | |
| Eq SourceUnpackedness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods (==) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (/=) :: SourceUnpackedness -> SourceUnpackedness -> Bool #  | |
| Eq SourceStrictness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods (==) :: SourceStrictness -> SourceStrictness -> Bool # (/=) :: SourceStrictness -> SourceStrictness -> Bool #  | |
| Eq DecidedStrictness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods (==) :: DecidedStrictness -> DecidedStrictness -> Bool # (/=) :: DecidedStrictness -> DecidedStrictness -> Bool #  | |
| Eq Extension | |
| Eq ForeignSrcLang | |
Defined in GHC.ForeignSrcLang.Type Methods (==) :: ForeignSrcLang -> ForeignSrcLang -> Bool # (/=) :: ForeignSrcLang -> ForeignSrcLang -> Bool #  | |
| Eq BigNat | |
| Eq ModName | |
| Eq PkgName | |
| Eq Module | |
| Eq OccName | |
| Eq NameFlavour | |
Defined in Language.Haskell.TH.Syntax  | |
| Eq NameSpace | |
| Eq Loc | |
| Eq Info | |
| Eq ModuleInfo | |
Defined in Language.Haskell.TH.Syntax  | |
| Eq Fixity | |
| Eq FixityDirection | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: FixityDirection -> FixityDirection -> Bool # (/=) :: FixityDirection -> FixityDirection -> Bool #  | |
| Eq Lit | |
| Eq Bytes | |
| Eq Body | |
| Eq Guard | |
| Eq Stmt | |
| Eq Range | |
| Eq DerivClause | |
Defined in Language.Haskell.TH.Syntax  | |
| Eq DerivStrategy | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: DerivStrategy -> DerivStrategy -> Bool # (/=) :: DerivStrategy -> DerivStrategy -> Bool #  | |
| Eq TypeFamilyHead | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: TypeFamilyHead -> TypeFamilyHead -> Bool # (/=) :: TypeFamilyHead -> TypeFamilyHead -> Bool #  | |
| Eq TySynEqn | |
| Eq Foreign | |
| Eq Callconv | |
| Eq Safety | |
| Eq Pragma | |
| Eq Inline | |
| Eq RuleMatch | |
| Eq Phases | |
| Eq RuleBndr | |
| Eq AnnTarget | |
| Eq SourceUnpackedness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (/=) :: SourceUnpackedness -> SourceUnpackedness -> Bool #  | |
| Eq SourceStrictness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: SourceStrictness -> SourceStrictness -> Bool # (/=) :: SourceStrictness -> SourceStrictness -> Bool #  | |
| Eq DecidedStrictness | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: DecidedStrictness -> DecidedStrictness -> Bool # (/=) :: DecidedStrictness -> DecidedStrictness -> Bool #  | |
| Eq Con | |
| Eq Bang | |
| Eq PatSynDir | |
| Eq PatSynArgs | |
Defined in Language.Haskell.TH.Syntax  | |
| Eq TyVarBndr | |
| Eq FamilyResultSig | |
Defined in Language.Haskell.TH.Syntax Methods (==) :: FamilyResultSig -> FamilyResultSig -> Bool # (/=) :: FamilyResultSig -> FamilyResultSig -> Bool #  | |
| Eq TyLit | |
| Eq Role | |
| Eq AnnLookup | |
| Eq a => Eq [a] | |
| Eq a => Eq (Maybe a) | Since: base-2.1  | 
| Eq p => Eq (Par1 p) | Since: base-4.7.0.0  | 
| Eq a => Eq (ZipList a) | Since: base-4.7.0.0  | 
| Eq a => Eq (Identity a) | Since: base-4.8.0.0  | 
| Eq a => Eq (NonEmpty a) | Since: base-4.9.0.0  | 
| Eq a => Eq (Seq a) | |
| Eq a => Eq (ViewL a) | |
| Eq a => Eq (ViewR a) | |
| Eq a => Eq (Set a) | |
| Eq a => Eq (Hashed a) | Uses precomputed hash to detect inequality faster  | 
| (Eq a, Eq b) => Eq (Either a b) | Since: base-2.1  | 
| Eq (V1 p) | Since: base-4.9.0.0  | 
| Eq (U1 p) | Since: base-4.9.0.0  | 
| (Eq a, Eq b) => Eq (a, b) | |
| (Eq k, Eq a) => Eq (Map k a) | |
| Eq (f p) => Eq (Rec1 f p) | Since: base-4.7.0.0  | 
| Eq (URec (Ptr ()) p) | Since: base-4.9.0.0  | 
| Eq (URec Char p) | Since: base-4.9.0.0  | 
| Eq (URec Double p) | Since: base-4.9.0.0  | 
| Eq (URec Float p) | |
| Eq (URec Int p) | Since: base-4.9.0.0  | 
| Eq (URec Word p) | Since: base-4.9.0.0  | 
| (Eq a, Eq b, Eq c) => Eq (a, b, c) | |
| Eq a => Eq (Const a b) | Since: base-4.9.0.0  | 
| Eq c => Eq (K1 i c p) | Since: base-4.7.0.0  | 
| (Eq (f p), Eq (g p)) => Eq ((f :+: g) p) | Since: base-4.7.0.0  | 
| (Eq (f p), Eq (g p)) => Eq ((f :*: g) p) | Since: base-4.7.0.0  | 
| (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d) | |
| Eq (f p) => Eq (M1 i c f p) | Since: base-4.7.0.0  | 
| Eq (f (g p)) => Eq ((f :.: g) p) | Since: base-4.7.0.0  | 
| (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h) => Eq (a, b, c, d, e, f, g, h) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i) => Eq (a, b, c, d, e, f, g, h, i) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j) => Eq (a, b, c, d, e, f, g, h, i, j) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k) => Eq (a, b, c, d, e, f, g, h, i, j, k) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l) => Eq (a, b, c, d, e, f, g, h, i, j, k, l) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
| (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g, Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o) => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
class Applicative m => Monad (m :: Type -> Type) where #
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
 returna>>=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.
Methods
(>>=) :: m a -> (a -> m b) -> m b infixl 1 #
Sequentially compose two actions, passing any value produced by the first as an argument to the second.
'as ' can be understood as the >>= bsdo expression
do a <- as bs a
Instances
| Monad [] | Since: base-2.1  | 
| Monad Maybe | Since: base-2.1  | 
| Monad IO | Since: base-2.1  | 
| Monad Par1 | Since: base-4.9.0.0  | 
| Monad Q | |
| Monad Identity | Since: base-4.8.0.0  | 
| Monad NonEmpty | Since: base-4.9.0.0  | 
| Monad Seq | |
| Monad (Either e) | Since: base-4.4.0.0  | 
| Monad (U1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Monoid a => Monad ((,) a) | Since: base-4.9.0.0  | 
| Monad m => Monad (WrappedMonad m) | Since: base-4.7.0.0  | 
Defined in Control.Applicative Methods (>>=) :: WrappedMonad m a -> (a -> WrappedMonad m b) -> WrappedMonad m b # (>>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b # return :: a -> WrappedMonad m a #  | |
| ArrowApply a => Monad (ArrowMonad a) | Since: base-2.1  | 
Defined in Control.Arrow Methods (>>=) :: ArrowMonad a a0 -> (a0 -> ArrowMonad a b) -> ArrowMonad a b # (>>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b # return :: a0 -> ArrowMonad a a0 #  | |
| Monad f => Monad (Rec1 f) | Since: base-4.9.0.0  | 
| (Monoid a, Monoid b) => Monad ((,,) a b) | Since: base-4.14.0.0  | 
| Monad m => Monad (Kleisli m a) | Since: base-4.14.0.0  | 
| Monad ((->) r :: Type -> Type) | Since: base-2.1  | 
| (Monad f, Monad g) => Monad (f :*: g) | Since: base-4.9.0.0  | 
| (Monoid a, Monoid b, Monoid c) => Monad ((,,,) a b c) | Since: base-4.14.0.0  | 
| (Applicative f, Monad f) => Monad (WhenMissing f k x) | Equivalent to  Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods (>>=) :: WhenMissing f k x a -> (a -> WhenMissing f k x b) -> WhenMissing f k x b # (>>) :: WhenMissing f k x a -> WhenMissing f k x b -> WhenMissing f k x b # return :: a -> WhenMissing f k x a #  | |
| Monad f => Monad (M1 i c f) | Since: base-4.9.0.0  | 
| (Monad f, Applicative f) => Monad (WhenMatched f k x y) | Equivalent to  Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods (>>=) :: WhenMatched f k x y a -> (a -> WhenMatched f k x y b) -> WhenMatched f k x y b # (>>) :: WhenMatched f k x y a -> WhenMatched f k x y b -> WhenMatched f k x y b # return :: a -> WhenMatched f k x y a #  | |
class Functor (f :: Type -> Type) where #
A type f is a Functor if it provides a function fmap which, given any types a and b
lets you apply any function from (a -> b) to turn an f a into an f b, preserving the
structure of f. Furthermore f needs to adhere to the following:
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.
Methods
fmap :: (a -> b) -> f a -> f b #
Using ApplicativeDo: '' can be understood as
 the fmap f asdo expression
do a <- as pure (f a)
with an inferred Functor constraint.
Instances
| Functor [] | Since: base-2.1  | 
| Functor Maybe | Since: base-2.1  | 
| Functor IO | Since: base-2.1  | 
| Functor Par1 | Since: base-4.9.0.0  | 
| Functor Q | |
| Functor ZipList | Since: base-2.1  | 
| Functor Identity | Since: base-4.8.0.0  | 
| Functor NonEmpty | Since: base-4.9.0.0  | 
| Functor Seq | |
| Functor FingerTree | |
Defined in Data.Sequence.Internal Methods fmap :: (a -> b) -> FingerTree a -> FingerTree b # (<$) :: a -> FingerTree b -> FingerTree a #  | |
| Functor Digit | |
| Functor Node | |
| Functor Elem | |
| Functor ViewL | |
| Functor ViewR | |
| Functor (Either a) | Since: base-3.0  | 
| Functor (V1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (U1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor ((,) a) | Since: base-2.1  | 
| Monad m => Functor (WrappedMonad m) | Since: base-2.1  | 
Defined in Control.Applicative Methods fmap :: (a -> b) -> WrappedMonad m a -> WrappedMonad m b # (<$) :: a -> WrappedMonad m b -> WrappedMonad m a #  | |
| Arrow a => Functor (ArrowMonad a) | Since: base-4.6.0.0  | 
Defined in Control.Arrow Methods fmap :: (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b # (<$) :: a0 -> ArrowMonad a b -> ArrowMonad a a0 #  | |
| Functor (Map k) | |
| Functor f => Functor (Rec1 f) | Since: base-4.9.0.0  | 
| Functor (URec Char :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (URec Double :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (URec Float :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (URec Int :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (URec Word :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor (URec (Ptr ()) :: Type -> Type) | Since: base-4.9.0.0  | 
| Functor ((,,) a b) | Since: base-4.14.0.0  | 
| Arrow a => Functor (WrappedArrow a b) | Since: base-2.1  | 
Defined in Control.Applicative Methods fmap :: (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 # (<$) :: a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 #  | |
| Functor m => Functor (Kleisli m a) | Since: base-4.14.0.0  | 
| Functor (Const m :: Type -> Type) | Since: base-2.1  | 
| Functor ((->) r :: Type -> Type) | Since: base-2.1  | 
| Functor (K1 i c :: Type -> Type) | Since: base-4.9.0.0  | 
| (Functor f, Functor g) => Functor (f :+: g) | Since: base-4.9.0.0  | 
| (Functor f, Functor g) => Functor (f :*: g) | Since: base-4.9.0.0  | 
| Functor ((,,,) a b c) | Since: base-4.14.0.0  | 
| (Applicative f, Monad f) => Functor (WhenMissing f k x) | Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods fmap :: (a -> b) -> WhenMissing f k x a -> WhenMissing f k x b # (<$) :: a -> WhenMissing f k x b -> WhenMissing f k x a #  | |
| Functor f => Functor (M1 i c f) | Since: base-4.9.0.0  | 
| (Functor f, Functor g) => Functor (f :.: g) | Since: base-4.9.0.0  | 
| Functor f => Functor (WhenMatched f k x y) | Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods fmap :: (a -> b) -> WhenMatched f k x y a -> WhenMatched f k x y b # (<$) :: a -> WhenMatched f k x y b -> WhenMatched f k x y a #  | |
The Ord class is used for totally ordered datatypes.
Instances of Ord can be derived for any user-defined datatype whose
 constituent types are in Ord. The declared order of the constructors in
 the data declaration determines the ordering in derived Ord instances. The
 Ordering datatype allows a single comparison to determine the precise
 ordering of two objects.
The Haskell Report defines no laws for Ord. However, <= is customarily
 expected to implement a non-strict partial order and have the following
 properties:
- Transitivity
 - if 
x <= y && y <= z=True, thenx <= z=True - Reflexivity
 x <= x=True- Antisymmetry
 - if 
x <= y && y <= x=True, thenx == y=True 
Note that the following operator interactions are expected to hold:
x >= y=y <= xx < y=x <= y && x /= yx > y=y < xx < y=compare x y == LTx > y=compare x y == GTx == y=compare x y == EQmin x y == if x <= y then x else y=Truemax x y == if x >= y then x else y=True
Note that (7.) and (8.) do not require min and max to return either of
 their arguments. The result is merely required to equal one of the
 arguments in terms of (==).
Minimal complete definition: either compare or <=.
 Using compare can be more efficient for complex types.
Instances
| Ord Bool | |
| Ord Char | |
| Ord Double | Note that due to the presence of  
 Also note that, due to the same,  
  | 
| Ord Float | Note that due to the presence of  
 Also note that, due to the same,  
  | 
| Ord Int | |
| Ord Integer | |
| Ord Ordering | |
Defined in GHC.Classes  | |
| Ord Word | |
| Ord Exp | |
| Ord Match | |
| Ord Clause | |
| Ord Pat | |
| Ord Type | |
| Ord Dec | |
| Ord Name | |
| Ord FunDep | |
| Ord InjectivityAnn | |
Defined in Language.Haskell.TH.Syntax Methods compare :: InjectivityAnn -> InjectivityAnn -> Ordering # (<) :: InjectivityAnn -> InjectivityAnn -> Bool # (<=) :: InjectivityAnn -> InjectivityAnn -> Bool # (>) :: InjectivityAnn -> InjectivityAnn -> Bool # (>=) :: InjectivityAnn -> InjectivityAnn -> Bool # max :: InjectivityAnn -> InjectivityAnn -> InjectivityAnn # min :: InjectivityAnn -> InjectivityAnn -> InjectivityAnn #  | |
| Ord Overlap | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord () | |
| Ord TyCon | |
| Ord Fixity | Since: base-4.6.0.0  | 
| Ord Associativity | Since: base-4.6.0.0  | 
Defined in GHC.Generics Methods compare :: Associativity -> Associativity -> Ordering # (<) :: Associativity -> Associativity -> Bool # (<=) :: Associativity -> Associativity -> Bool # (>) :: Associativity -> Associativity -> Bool # (>=) :: Associativity -> Associativity -> Bool # max :: Associativity -> Associativity -> Associativity # min :: Associativity -> Associativity -> Associativity #  | |
| Ord SourceUnpackedness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods compare :: SourceUnpackedness -> SourceUnpackedness -> Ordering # (<) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (<=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (>) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (>=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # max :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness # min :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness #  | |
| Ord SourceStrictness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods compare :: SourceStrictness -> SourceStrictness -> Ordering # (<) :: SourceStrictness -> SourceStrictness -> Bool # (<=) :: SourceStrictness -> SourceStrictness -> Bool # (>) :: SourceStrictness -> SourceStrictness -> Bool # (>=) :: SourceStrictness -> SourceStrictness -> Bool # max :: SourceStrictness -> SourceStrictness -> SourceStrictness # min :: SourceStrictness -> SourceStrictness -> SourceStrictness #  | |
| Ord DecidedStrictness | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods compare :: DecidedStrictness -> DecidedStrictness -> Ordering # (<) :: DecidedStrictness -> DecidedStrictness -> Bool # (<=) :: DecidedStrictness -> DecidedStrictness -> Bool # (>) :: DecidedStrictness -> DecidedStrictness -> Bool # (>=) :: DecidedStrictness -> DecidedStrictness -> Bool # max :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness # min :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness #  | |
| Ord BigNat | |
| Ord ModName | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord PkgName | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord Module | |
| Ord OccName | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord NameFlavour | |
Defined in Language.Haskell.TH.Syntax Methods compare :: NameFlavour -> NameFlavour -> Ordering # (<) :: NameFlavour -> NameFlavour -> Bool # (<=) :: NameFlavour -> NameFlavour -> Bool # (>) :: NameFlavour -> NameFlavour -> Bool # (>=) :: NameFlavour -> NameFlavour -> Bool # max :: NameFlavour -> NameFlavour -> NameFlavour # min :: NameFlavour -> NameFlavour -> NameFlavour #  | |
| Ord NameSpace | |
| Ord Loc | |
| Ord Info | |
| Ord ModuleInfo | |
Defined in Language.Haskell.TH.Syntax Methods compare :: ModuleInfo -> ModuleInfo -> Ordering # (<) :: ModuleInfo -> ModuleInfo -> Bool # (<=) :: ModuleInfo -> ModuleInfo -> Bool # (>) :: ModuleInfo -> ModuleInfo -> Bool # (>=) :: ModuleInfo -> ModuleInfo -> Bool # max :: ModuleInfo -> ModuleInfo -> ModuleInfo # min :: ModuleInfo -> ModuleInfo -> ModuleInfo #  | |
| Ord Fixity | |
| Ord FixityDirection | |
Defined in Language.Haskell.TH.Syntax Methods compare :: FixityDirection -> FixityDirection -> Ordering # (<) :: FixityDirection -> FixityDirection -> Bool # (<=) :: FixityDirection -> FixityDirection -> Bool # (>) :: FixityDirection -> FixityDirection -> Bool # (>=) :: FixityDirection -> FixityDirection -> Bool # max :: FixityDirection -> FixityDirection -> FixityDirection # min :: FixityDirection -> FixityDirection -> FixityDirection #  | |
| Ord Lit | |
| Ord Bytes | |
| Ord Body | |
| Ord Guard | |
| Ord Stmt | |
| Ord Range | |
| Ord DerivClause | |
Defined in Language.Haskell.TH.Syntax Methods compare :: DerivClause -> DerivClause -> Ordering # (<) :: DerivClause -> DerivClause -> Bool # (<=) :: DerivClause -> DerivClause -> Bool # (>) :: DerivClause -> DerivClause -> Bool # (>=) :: DerivClause -> DerivClause -> Bool # max :: DerivClause -> DerivClause -> DerivClause # min :: DerivClause -> DerivClause -> DerivClause #  | |
| Ord DerivStrategy | |
Defined in Language.Haskell.TH.Syntax Methods compare :: DerivStrategy -> DerivStrategy -> Ordering # (<) :: DerivStrategy -> DerivStrategy -> Bool # (<=) :: DerivStrategy -> DerivStrategy -> Bool # (>) :: DerivStrategy -> DerivStrategy -> Bool # (>=) :: DerivStrategy -> DerivStrategy -> Bool # max :: DerivStrategy -> DerivStrategy -> DerivStrategy # min :: DerivStrategy -> DerivStrategy -> DerivStrategy #  | |
| Ord TypeFamilyHead | |
Defined in Language.Haskell.TH.Syntax Methods compare :: TypeFamilyHead -> TypeFamilyHead -> Ordering # (<) :: TypeFamilyHead -> TypeFamilyHead -> Bool # (<=) :: TypeFamilyHead -> TypeFamilyHead -> Bool # (>) :: TypeFamilyHead -> TypeFamilyHead -> Bool # (>=) :: TypeFamilyHead -> TypeFamilyHead -> Bool # max :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead # min :: TypeFamilyHead -> TypeFamilyHead -> TypeFamilyHead #  | |
| Ord TySynEqn | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord Foreign | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord Callconv | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord Safety | |
| Ord Pragma | |
| Ord Inline | |
| Ord RuleMatch | |
| Ord Phases | |
| Ord RuleBndr | |
Defined in Language.Haskell.TH.Syntax  | |
| Ord AnnTarget | |
| Ord SourceUnpackedness | |
Defined in Language.Haskell.TH.Syntax Methods compare :: SourceUnpackedness -> SourceUnpackedness -> Ordering # (<) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (<=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (>) :: SourceUnpackedness -> SourceUnpackedness -> Bool # (>=) :: SourceUnpackedness -> SourceUnpackedness -> Bool # max :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness # min :: SourceUnpackedness -> SourceUnpackedness -> SourceUnpackedness #  | |
| Ord SourceStrictness | |
Defined in Language.Haskell.TH.Syntax Methods compare :: SourceStrictness -> SourceStrictness -> Ordering # (<) :: SourceStrictness -> SourceStrictness -> Bool # (<=) :: SourceStrictness -> SourceStrictness -> Bool # (>) :: SourceStrictness -> SourceStrictness -> Bool # (>=) :: SourceStrictness -> SourceStrictness -> Bool # max :: SourceStrictness -> SourceStrictness -> SourceStrictness # min :: SourceStrictness -> SourceStrictness -> SourceStrictness #  | |
| Ord DecidedStrictness | |
Defined in Language.Haskell.TH.Syntax Methods compare :: DecidedStrictness -> DecidedStrictness -> Ordering # (<) :: DecidedStrictness -> DecidedStrictness -> Bool # (<=) :: DecidedStrictness -> DecidedStrictness -> Bool # (>) :: DecidedStrictness -> DecidedStrictness -> Bool # (>=) :: DecidedStrictness -> DecidedStrictness -> Bool # max :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness # min :: DecidedStrictness -> DecidedStrictness -> DecidedStrictness #  | |
| Ord Con | |
| Ord Bang | |
| Ord PatSynDir | |
| Ord PatSynArgs | |
Defined in Language.Haskell.TH.Syntax Methods compare :: PatSynArgs -> PatSynArgs -> Ordering # (<) :: PatSynArgs -> PatSynArgs -> Bool # (<=) :: PatSynArgs -> PatSynArgs -> Bool # (>) :: PatSynArgs -> PatSynArgs -> Bool # (>=) :: PatSynArgs -> PatSynArgs -> Bool # max :: PatSynArgs -> PatSynArgs -> PatSynArgs # min :: PatSynArgs -> PatSynArgs -> PatSynArgs #  | |
| Ord TyVarBndr | |
| Ord FamilyResultSig | |
Defined in Language.Haskell.TH.Syntax Methods compare :: FamilyResultSig -> FamilyResultSig -> Ordering # (<) :: FamilyResultSig -> FamilyResultSig -> Bool # (<=) :: FamilyResultSig -> FamilyResultSig -> Bool # (>) :: FamilyResultSig -> FamilyResultSig -> Bool # (>=) :: FamilyResultSig -> FamilyResultSig -> Bool # max :: FamilyResultSig -> FamilyResultSig -> FamilyResultSig # min :: FamilyResultSig -> FamilyResultSig -> FamilyResultSig #  | |
| Ord TyLit | |
| Ord Role | |
| Ord AnnLookup | |
| Ord a => Ord [a] | |
| Ord a => Ord (Maybe a) | Since: base-2.1  | 
| Ord p => Ord (Par1 p) | Since: base-4.7.0.0  | 
| Ord a => Ord (ZipList a) | Since: base-4.7.0.0  | 
| Ord a => Ord (Identity a) | Since: base-4.8.0.0  | 
Defined in Data.Functor.Identity  | |
| Ord a => Ord (NonEmpty a) | Since: base-4.9.0.0  | 
| Ord a => Ord (Seq a) | |
| Ord a => Ord (ViewL a) | |
Defined in Data.Sequence.Internal  | |
| Ord a => Ord (ViewR a) | |
Defined in Data.Sequence.Internal  | |
| Ord a => Ord (Set a) | |
| Ord a => Ord (Hashed a) | |
Defined in Data.Hashable.Class  | |
| (Ord a, Ord b) => Ord (Either a b) | Since: base-2.1  | 
| Ord (V1 p) | Since: base-4.9.0.0  | 
| Ord (U1 p) | Since: base-4.7.0.0  | 
| (Ord a, Ord b) => Ord (a, b) | |
| (Ord k, Ord v) => Ord (Map k v) | |
| Ord (f p) => Ord (Rec1 f p) | Since: base-4.7.0.0  | 
Defined in GHC.Generics  | |
| Ord (URec (Ptr ()) p) | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods compare :: URec (Ptr ()) p -> URec (Ptr ()) p -> Ordering # (<) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (<=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (>) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # (>=) :: URec (Ptr ()) p -> URec (Ptr ()) p -> Bool # max :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p # min :: URec (Ptr ()) p -> URec (Ptr ()) p -> URec (Ptr ()) p #  | |
| Ord (URec Char p) | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| Ord (URec Double p) | Since: base-4.9.0.0  | 
Defined in GHC.Generics Methods compare :: URec Double p -> URec Double p -> Ordering # (<) :: URec Double p -> URec Double p -> Bool # (<=) :: URec Double p -> URec Double p -> Bool # (>) :: URec Double p -> URec Double p -> Bool # (>=) :: URec Double p -> URec Double p -> Bool #  | |
| Ord (URec Float p) | |
Defined in GHC.Generics  | |
| Ord (URec Int p) | Since: base-4.9.0.0  | 
| Ord (URec Word p) | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| (Ord a, Ord b, Ord c) => Ord (a, b, c) | |
| Ord a => Ord (Const a b) | Since: base-4.9.0.0  | 
| Ord c => Ord (K1 i c p) | Since: base-4.7.0.0  | 
Defined in GHC.Generics  | |
| (Ord (f p), Ord (g p)) => Ord ((f :+: g) p) | Since: base-4.7.0.0  | 
Defined in GHC.Generics  | |
| (Ord (f p), Ord (g p)) => Ord ((f :*: g) p) | Since: base-4.7.0.0  | 
Defined in GHC.Generics  | |
| (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d) | |
Defined in GHC.Classes  | |
| Ord (f p) => Ord (M1 i c f p) | Since: base-4.7.0.0  | 
| Ord (f (g p)) => Ord ((f :.: g) p) | Since: base-4.7.0.0  | 
Defined in GHC.Generics  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e) -> (a, b, c, d, e) -> Ordering # (<) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool # (<=) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool # (>) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool # (>=) :: (a, b, c, d, e) -> (a, b, c, d, e) -> Bool # max :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) # min :: (a, b, c, d, e) -> (a, b, c, d, e) -> (a, b, c, d, e) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Ordering # (<) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool # (<=) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool # (>) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool # (>=) :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> Bool # max :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) # min :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) -> (a, b, c, d, e, f) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g) => Ord (a, b, c, d, e, f, g) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Ordering # (<) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool # (<=) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool # (>) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool # (>=) :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> Bool # max :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) # min :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h) => Ord (a, b, c, d, e, f, g, h) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Ordering # (<) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool # (<=) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool # (>) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool # (>=) :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> Bool # max :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) # min :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i) => Ord (a, b, c, d, e, f, g, h, i) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> Bool # max :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) # min :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j) => Ord (a, b, c, d, e, f, g, h, i, j) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) # min :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k) => Ord (a, b, c, d, e, f, g, h, i, j, k) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) # min :: (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) -> (a, b, c, d, e, f, g, h, i, j, k) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l) => Ord (a, b, c, d, e, f, g, h, i, j, k, l) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) # min :: (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) -> (a, b, c, d, e, f, g, h, i, j, k, l) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) # min :: (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) -> (a, b, c, d, e, f, g, h, i, j, k, l, m) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) # min :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n) #  | |
| (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g, Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o) => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) | |
Defined in GHC.Classes Methods compare :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Ordering # (<) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool # (<=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool # (>) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool # (>=) :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> Bool # max :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) # min :: (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) -> (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o) #  | |
Conversion of values to readable Strings.
Derived instances of Show have the following properties, which
 are compatible with derived instances of Read:
- The result of 
showis a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used. - If the constructor is defined to be an infix operator, then
   
showsPrecwill produce infix applications of the constructor. - the representation will be enclosed in parentheses if the
   precedence of the top-level constructor in 
xis less thand(associativity is ignored). Thus, ifdis0then the result is never surrounded in parentheses; ifdis11it is always surrounded in parentheses, unless it is an atomic expression. - If the constructor is defined using record syntax, then 
showwill produce the record-syntax form, with the fields given in the same order as the original declaration. 
For example, given the declarations
infixr 5 :^: data Tree a = Leaf a | Tree a :^: Tree a
the derived instance of Show is equivalent to
instance (Show a) => Show (Tree a) where
       showsPrec d (Leaf m) = showParen (d > app_prec) $
            showString "Leaf " . showsPrec (app_prec+1) m
         where app_prec = 10
       showsPrec d (u :^: v) = showParen (d > up_prec) $
            showsPrec (up_prec+1) u .
            showString " :^: "      .
            showsPrec (up_prec+1) v
         where up_prec = 5Note that right-associativity of :^: is ignored.  For example,
produces the stringshow(Leaf 1 :^: Leaf 2 :^: Leaf 3)"Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
Instances
class Functor f => Applicative (f :: Type -> Type) where #
A functor with application, providing operations to
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:
(<*>) =liftA2id
liftA2f x y = f<$>x<*>y
Further, any definition must satisfy the following:
- Identity
 pureid<*>v = v- Composition
 pure(.)<*>u<*>v<*>w = u<*>(v<*>w)- Homomorphism
 puref<*>purex =pure(f x)- Interchange
 u
<*>purey =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
liftA2p (liftA2q u v) =liftA2f u .liftA2g v
If f is also a Monad, it should satisfy
(which implies that pure and <*> satisfy the applicative functor laws).
Methods
Lift a value.
Instances
| Applicative [] | Since: base-2.1  | 
| Applicative Maybe | Since: base-2.1  | 
| Applicative IO | Since: base-2.1  | 
| Applicative Par1 | Since: base-4.9.0.0  | 
| Applicative Q | |
| Applicative ZipList | f <$> ZipList xs1 <*> ... <*> ZipList xsN
    = ZipList (zipWithN f xs1 ... xsN)where  (\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  | 
| Applicative Identity | Since: base-4.8.0.0  | 
| Applicative NonEmpty | Since: base-4.9.0.0  | 
| Applicative Seq | Since: containers-0.5.4  | 
| Applicative (Either e) | Since: base-3.0  | 
| Applicative (U1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Monoid a => Applicative ((,) a) | For tuples, the  ("hello ", (+15)) <*> ("world!", 2002)
("hello world!",2017)Since: base-2.1  | 
| Monad m => Applicative (WrappedMonad m) | Since: base-2.1  | 
Defined in Control.Applicative Methods pure :: a -> WrappedMonad m a # (<*>) :: WrappedMonad m (a -> b) -> WrappedMonad m a -> WrappedMonad m b # liftA2 :: (a -> b -> c) -> WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m c # (*>) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m b # (<*) :: WrappedMonad m a -> WrappedMonad m b -> WrappedMonad m a #  | |
| Arrow a => Applicative (ArrowMonad a) | Since: base-4.6.0.0  | 
Defined in Control.Arrow Methods pure :: a0 -> ArrowMonad a a0 # (<*>) :: ArrowMonad a (a0 -> b) -> ArrowMonad a a0 -> ArrowMonad a b # liftA2 :: (a0 -> b -> c) -> ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a c # (*>) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a b # (<*) :: ArrowMonad a a0 -> ArrowMonad a b -> ArrowMonad a a0 #  | |
| Applicative f => Applicative (Rec1 f) | Since: base-4.9.0.0  | 
| (Monoid a, Monoid b) => Applicative ((,,) a b) | Since: base-4.14.0.0  | 
| Arrow a => Applicative (WrappedArrow a b) | Since: base-2.1  | 
Defined in Control.Applicative Methods pure :: a0 -> WrappedArrow a b a0 # (<*>) :: WrappedArrow a b (a0 -> b0) -> WrappedArrow a b a0 -> WrappedArrow a b b0 # liftA2 :: (a0 -> b0 -> c) -> WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b c # (*>) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b b0 # (<*) :: WrappedArrow a b a0 -> WrappedArrow a b b0 -> WrappedArrow a b a0 #  | |
| Applicative m => Applicative (Kleisli m a) | Since: base-4.14.0.0  | 
Defined in Control.Arrow  | |
| Monoid m => Applicative (Const m :: Type -> Type) | Since: base-2.0.1  | 
| Applicative ((->) r :: Type -> Type) | Since: base-2.1  | 
| Monoid c => Applicative (K1 i c :: Type -> Type) | Since: base-4.12.0.0  | 
| (Applicative f, Applicative g) => Applicative (f :*: g) | Since: base-4.9.0.0  | 
| (Monoid a, Monoid b, Monoid c) => Applicative ((,,,) a b c) | Since: base-4.14.0.0  | 
Defined in GHC.Base  | |
| (Applicative f, Monad f) => Applicative (WhenMissing f k x) | Equivalent to  Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods pure :: a -> WhenMissing f k x a # (<*>) :: WhenMissing f k x (a -> b) -> WhenMissing f k x a -> WhenMissing f k x b # liftA2 :: (a -> b -> c) -> WhenMissing f k x a -> WhenMissing f k x b -> WhenMissing f k x c # (*>) :: WhenMissing f k x a -> WhenMissing f k x b -> WhenMissing f k x b # (<*) :: WhenMissing f k x a -> WhenMissing f k x b -> WhenMissing f k x a #  | |
| Applicative f => Applicative (M1 i c f) | Since: base-4.9.0.0  | 
| (Applicative f, Applicative g) => Applicative (f :.: g) | Since: base-4.9.0.0  | 
| (Monad f, Applicative f) => Applicative (WhenMatched f k x y) | Equivalent to  Since: containers-0.5.9  | 
Defined in Data.Map.Internal Methods pure :: a -> WhenMatched f k x y a # (<*>) :: WhenMatched f k x y (a -> b) -> WhenMatched f k x y a -> WhenMatched f k x y b # liftA2 :: (a -> b -> c) -> WhenMatched f k x y a -> WhenMatched f k x y b -> WhenMatched f k x y c # (*>) :: WhenMatched f k x y a -> WhenMatched f k x y b -> WhenMatched f k x y b # (<*) :: WhenMatched f k x y a -> WhenMatched f k x y b -> WhenMatched f k x y a #  | |
class Foldable (t :: Type -> Type) #
Data structures that can be folded.
For example, given a data type
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
a suitable instance would be
instance Foldable Tree where foldMap f Empty = mempty foldMap f (Leaf x) = f x foldMap f (Node l k r) = foldMap f l `mappend` f k `mappend` foldMap f r
This is suitable even for abstract types, as the monoid is assumed
 to satisfy the monoid laws.  Alternatively, one could define foldr:
instance Foldable Tree where foldr f z Empty = z foldr f z (Leaf x) = f x z foldr f z (Node l k r) = foldr f (f k (foldr f z r)) l
Foldable instances are expected to satisfy the following laws:
foldr f z t = appEndo (foldMap (Endo . f) t ) z
foldl f z t = appEndo (getDual (foldMap (Dual . Endo . flip f) t)) z
fold = foldMap id
length = getSum . foldMap (Sum . const 1)
sum, product, maximum, and minimum should all be essentially
 equivalent to foldMap forms, such as
sum = getSum . foldMap Sum
but may be less defined.
If the type is also a Functor instance, it should satisfy
foldMap f = fold . fmap f
which implies that
foldMap f . fmap g = foldMap (f . g)
Instances
| Foldable [] | Since: base-2.1  | 
Defined in Data.Foldable Methods fold :: Monoid m => [m] -> m # foldMap :: Monoid m => (a -> m) -> [a] -> m # foldMap' :: Monoid m => (a -> m) -> [a] -> m # foldr :: (a -> b -> b) -> b -> [a] -> b # foldr' :: (a -> b -> b) -> b -> [a] -> b # foldl :: (b -> a -> b) -> b -> [a] -> b # foldl' :: (b -> a -> b) -> b -> [a] -> b # foldr1 :: (a -> a -> a) -> [a] -> a # foldl1 :: (a -> a -> a) -> [a] -> a # elem :: Eq a => a -> [a] -> Bool # maximum :: Ord a => [a] -> a #  | |
| Foldable Maybe | Since: base-2.1  | 
Defined in Data.Foldable Methods fold :: Monoid m => Maybe m -> m # foldMap :: Monoid m => (a -> m) -> Maybe a -> m # foldMap' :: Monoid m => (a -> m) -> Maybe a -> m # foldr :: (a -> b -> b) -> b -> Maybe a -> b # foldr' :: (a -> b -> b) -> b -> Maybe a -> b # foldl :: (b -> a -> b) -> b -> Maybe a -> b # foldl' :: (b -> a -> b) -> b -> Maybe a -> b # foldr1 :: (a -> a -> a) -> Maybe a -> a # foldl1 :: (a -> a -> a) -> Maybe a -> a # elem :: Eq a => a -> Maybe a -> Bool # maximum :: Ord a => Maybe a -> a # minimum :: Ord a => Maybe a -> a #  | |
| Foldable Par1 | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Par1 m -> m # foldMap :: Monoid m => (a -> m) -> Par1 a -> m # foldMap' :: Monoid m => (a -> m) -> Par1 a -> m # foldr :: (a -> b -> b) -> b -> Par1 a -> b # foldr' :: (a -> b -> b) -> b -> Par1 a -> b # foldl :: (b -> a -> b) -> b -> Par1 a -> b # foldl' :: (b -> a -> b) -> b -> Par1 a -> b # foldr1 :: (a -> a -> a) -> Par1 a -> a # foldl1 :: (a -> a -> a) -> Par1 a -> a # elem :: Eq a => a -> Par1 a -> Bool # maximum :: Ord a => Par1 a -> a #  | |
| Foldable ZipList | Since: base-4.9.0.0  | 
Defined in Control.Applicative Methods fold :: Monoid m => ZipList m -> m # foldMap :: Monoid m => (a -> m) -> ZipList a -> m # foldMap' :: Monoid m => (a -> m) -> ZipList a -> m # foldr :: (a -> b -> b) -> b -> ZipList a -> b # foldr' :: (a -> b -> b) -> b -> ZipList a -> b # foldl :: (b -> a -> b) -> b -> ZipList a -> b # foldl' :: (b -> a -> b) -> b -> ZipList a -> b # foldr1 :: (a -> a -> a) -> ZipList a -> a # foldl1 :: (a -> a -> a) -> ZipList a -> a # elem :: Eq a => a -> ZipList a -> Bool # maximum :: Ord a => ZipList a -> a # minimum :: Ord a => ZipList a -> a #  | |
| Foldable Identity | Since: base-4.8.0.0  | 
Defined in Data.Functor.Identity Methods fold :: Monoid m => Identity m -> m # foldMap :: Monoid m => (a -> m) -> Identity a -> m # foldMap' :: Monoid m => (a -> m) -> Identity a -> m # foldr :: (a -> b -> b) -> b -> Identity a -> b # foldr' :: (a -> b -> b) -> b -> Identity a -> b # foldl :: (b -> a -> b) -> b -> Identity a -> b # foldl' :: (b -> a -> b) -> b -> Identity a -> b # foldr1 :: (a -> a -> a) -> Identity a -> a # foldl1 :: (a -> a -> a) -> Identity a -> a # elem :: Eq a => a -> Identity a -> Bool # maximum :: Ord a => Identity a -> a # minimum :: Ord a => Identity a -> a #  | |
| Foldable First | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => First m -> m # foldMap :: Monoid m => (a -> m) -> First a -> m # foldMap' :: Monoid m => (a -> m) -> First a -> m # foldr :: (a -> b -> b) -> b -> First a -> b # foldr' :: (a -> b -> b) -> b -> First a -> b # foldl :: (b -> a -> b) -> b -> First a -> b # foldl' :: (b -> a -> b) -> b -> First a -> b # foldr1 :: (a -> a -> a) -> First a -> a # foldl1 :: (a -> a -> a) -> First a -> a # elem :: Eq a => a -> First a -> Bool # maximum :: Ord a => First a -> a # minimum :: Ord a => First a -> a #  | |
| Foldable Last | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Last m -> m # foldMap :: Monoid m => (a -> m) -> Last a -> m # foldMap' :: Monoid m => (a -> m) -> Last a -> m # foldr :: (a -> b -> b) -> b -> Last a -> b # foldr' :: (a -> b -> b) -> b -> Last a -> b # foldl :: (b -> a -> b) -> b -> Last a -> b # foldl' :: (b -> a -> b) -> b -> Last a -> b # foldr1 :: (a -> a -> a) -> Last a -> a # foldl1 :: (a -> a -> a) -> Last a -> a # elem :: Eq a => a -> Last a -> Bool # maximum :: Ord a => Last a -> a #  | |
| Foldable Dual | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Dual m -> m # foldMap :: Monoid m => (a -> m) -> Dual a -> m # foldMap' :: Monoid m => (a -> m) -> Dual a -> m # foldr :: (a -> b -> b) -> b -> Dual a -> b # foldr' :: (a -> b -> b) -> b -> Dual a -> b # foldl :: (b -> a -> b) -> b -> Dual a -> b # foldl' :: (b -> a -> b) -> b -> Dual a -> b # foldr1 :: (a -> a -> a) -> Dual a -> a # foldl1 :: (a -> a -> a) -> Dual a -> a # elem :: Eq a => a -> Dual a -> Bool # maximum :: Ord a => Dual a -> a #  | |
| Foldable Sum | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Sum m -> m # foldMap :: Monoid m => (a -> m) -> Sum a -> m # foldMap' :: Monoid m => (a -> m) -> Sum a -> m # foldr :: (a -> b -> b) -> b -> Sum a -> b # foldr' :: (a -> b -> b) -> b -> Sum a -> b # foldl :: (b -> a -> b) -> b -> Sum a -> b # foldl' :: (b -> a -> b) -> b -> Sum a -> b # foldr1 :: (a -> a -> a) -> Sum a -> a # foldl1 :: (a -> a -> a) -> Sum a -> a # elem :: Eq a => a -> Sum a -> Bool # maximum :: Ord a => Sum a -> a #  | |
| Foldable Product | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Product m -> m # foldMap :: Monoid m => (a -> m) -> Product a -> m # foldMap' :: Monoid m => (a -> m) -> Product a -> m # foldr :: (a -> b -> b) -> b -> Product a -> b # foldr' :: (a -> b -> b) -> b -> Product a -> b # foldl :: (b -> a -> b) -> b -> Product a -> b # foldl' :: (b -> a -> b) -> b -> Product a -> b # foldr1 :: (a -> a -> a) -> Product a -> a # foldl1 :: (a -> a -> a) -> Product a -> a # elem :: Eq a => a -> Product a -> Bool # maximum :: Ord a => Product a -> a # minimum :: Ord a => Product a -> a #  | |
| Foldable Down | Since: base-4.12.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Down m -> m # foldMap :: Monoid m => (a -> m) -> Down a -> m # foldMap' :: Monoid m => (a -> m) -> Down a -> m # foldr :: (a -> b -> b) -> b -> Down a -> b # foldr' :: (a -> b -> b) -> b -> Down a -> b # foldl :: (b -> a -> b) -> b -> Down a -> b # foldl' :: (b -> a -> b) -> b -> Down a -> b # foldr1 :: (a -> a -> a) -> Down a -> a # foldl1 :: (a -> a -> a) -> Down a -> a # elem :: Eq a => a -> Down a -> Bool # maximum :: Ord a => Down a -> a #  | |
| Foldable NonEmpty | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => NonEmpty m -> m # foldMap :: Monoid m => (a -> m) -> NonEmpty a -> m # foldMap' :: Monoid m => (a -> m) -> NonEmpty a -> m # foldr :: (a -> b -> b) -> b -> NonEmpty a -> b # foldr' :: (a -> b -> b) -> b -> NonEmpty a -> b # foldl :: (b -> a -> b) -> b -> NonEmpty a -> b # foldl' :: (b -> a -> b) -> b -> NonEmpty a -> b # foldr1 :: (a -> a -> a) -> NonEmpty a -> a # foldl1 :: (a -> a -> a) -> NonEmpty a -> a # elem :: Eq a => a -> NonEmpty a -> Bool # maximum :: Ord a => NonEmpty a -> a # minimum :: Ord a => NonEmpty a -> a #  | |
| Foldable Seq | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Seq m -> m # foldMap :: Monoid m => (a -> m) -> Seq a -> m # foldMap' :: Monoid m => (a -> m) -> Seq a -> m # foldr :: (a -> b -> b) -> b -> Seq a -> b # foldr' :: (a -> b -> b) -> b -> Seq a -> b # foldl :: (b -> a -> b) -> b -> Seq a -> b # foldl' :: (b -> a -> b) -> b -> Seq a -> b # foldr1 :: (a -> a -> a) -> Seq a -> a # foldl1 :: (a -> a -> a) -> Seq a -> a # elem :: Eq a => a -> Seq a -> Bool # maximum :: Ord a => Seq a -> a #  | |
| Foldable FingerTree | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => FingerTree m -> m # foldMap :: Monoid m => (a -> m) -> FingerTree a -> m # foldMap' :: Monoid m => (a -> m) -> FingerTree a -> m # foldr :: (a -> b -> b) -> b -> FingerTree a -> b # foldr' :: (a -> b -> b) -> b -> FingerTree a -> b # foldl :: (b -> a -> b) -> b -> FingerTree a -> b # foldl' :: (b -> a -> b) -> b -> FingerTree a -> b # foldr1 :: (a -> a -> a) -> FingerTree a -> a # foldl1 :: (a -> a -> a) -> FingerTree a -> a # toList :: FingerTree a -> [a] # null :: FingerTree a -> Bool # length :: FingerTree a -> Int # elem :: Eq a => a -> FingerTree a -> Bool # maximum :: Ord a => FingerTree a -> a # minimum :: Ord a => FingerTree a -> a # sum :: Num a => FingerTree a -> a # product :: Num a => FingerTree a -> a #  | |
| Foldable Digit | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Digit m -> m # foldMap :: Monoid m => (a -> m) -> Digit a -> m # foldMap' :: Monoid m => (a -> m) -> Digit a -> m # foldr :: (a -> b -> b) -> b -> Digit a -> b # foldr' :: (a -> b -> b) -> b -> Digit a -> b # foldl :: (b -> a -> b) -> b -> Digit a -> b # foldl' :: (b -> a -> b) -> b -> Digit a -> b # foldr1 :: (a -> a -> a) -> Digit a -> a # foldl1 :: (a -> a -> a) -> Digit a -> a # elem :: Eq a => a -> Digit a -> Bool # maximum :: Ord a => Digit a -> a # minimum :: Ord a => Digit a -> a #  | |
| Foldable Node | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Node m -> m # foldMap :: Monoid m => (a -> m) -> Node a -> m # foldMap' :: Monoid m => (a -> m) -> Node a -> m # foldr :: (a -> b -> b) -> b -> Node a -> b # foldr' :: (a -> b -> b) -> b -> Node a -> b # foldl :: (b -> a -> b) -> b -> Node a -> b # foldl' :: (b -> a -> b) -> b -> Node a -> b # foldr1 :: (a -> a -> a) -> Node a -> a # foldl1 :: (a -> a -> a) -> Node a -> a # elem :: Eq a => a -> Node a -> Bool # maximum :: Ord a => Node a -> a #  | |
| Foldable Elem | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Elem m -> m # foldMap :: Monoid m => (a -> m) -> Elem a -> m # foldMap' :: Monoid m => (a -> m) -> Elem a -> m # foldr :: (a -> b -> b) -> b -> Elem a -> b # foldr' :: (a -> b -> b) -> b -> Elem a -> b # foldl :: (b -> a -> b) -> b -> Elem a -> b # foldl' :: (b -> a -> b) -> b -> Elem a -> b # foldr1 :: (a -> a -> a) -> Elem a -> a # foldl1 :: (a -> a -> a) -> Elem a -> a # elem :: Eq a => a -> Elem a -> Bool # maximum :: Ord a => Elem a -> a #  | |
| Foldable ViewL | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => ViewL m -> m # foldMap :: Monoid m => (a -> m) -> ViewL a -> m # foldMap' :: Monoid m => (a -> m) -> ViewL a -> m # foldr :: (a -> b -> b) -> b -> ViewL a -> b # foldr' :: (a -> b -> b) -> b -> ViewL a -> b # foldl :: (b -> a -> b) -> b -> ViewL a -> b # foldl' :: (b -> a -> b) -> b -> ViewL a -> b # foldr1 :: (a -> a -> a) -> ViewL a -> a # foldl1 :: (a -> a -> a) -> ViewL a -> a # elem :: Eq a => a -> ViewL a -> Bool # maximum :: Ord a => ViewL a -> a # minimum :: Ord a => ViewL a -> a #  | |
| Foldable ViewR | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => ViewR m -> m # foldMap :: Monoid m => (a -> m) -> ViewR a -> m # foldMap' :: Monoid m => (a -> m) -> ViewR a -> m # foldr :: (a -> b -> b) -> b -> ViewR a -> b # foldr' :: (a -> b -> b) -> b -> ViewR a -> b # foldl :: (b -> a -> b) -> b -> ViewR a -> b # foldl' :: (b -> a -> b) -> b -> ViewR a -> b # foldr1 :: (a -> a -> a) -> ViewR a -> a # foldl1 :: (a -> a -> a) -> ViewR a -> a # elem :: Eq a => a -> ViewR a -> Bool # maximum :: Ord a => ViewR a -> a # minimum :: Ord a => ViewR a -> a #  | |
| Foldable Set | Folds in order of increasing key.  | 
Defined in Data.Set.Internal Methods fold :: Monoid m => Set m -> m # foldMap :: Monoid m => (a -> m) -> Set a -> m # foldMap' :: Monoid m => (a -> m) -> Set a -> m # foldr :: (a -> b -> b) -> b -> Set a -> b # foldr' :: (a -> b -> b) -> b -> Set a -> b # foldl :: (b -> a -> b) -> b -> Set a -> b # foldl' :: (b -> a -> b) -> b -> Set a -> b # foldr1 :: (a -> a -> a) -> Set a -> a # foldl1 :: (a -> a -> a) -> Set a -> a # elem :: Eq a => a -> Set a -> Bool # maximum :: Ord a => Set a -> a #  | |
| Foldable Hashed | |
Defined in Data.Hashable.Class Methods fold :: Monoid m => Hashed m -> m # foldMap :: Monoid m => (a -> m) -> Hashed a -> m # foldMap' :: Monoid m => (a -> m) -> Hashed a -> m # foldr :: (a -> b -> b) -> b -> Hashed a -> b # foldr' :: (a -> b -> b) -> b -> Hashed a -> b # foldl :: (b -> a -> b) -> b -> Hashed a -> b # foldl' :: (b -> a -> b) -> b -> Hashed a -> b # foldr1 :: (a -> a -> a) -> Hashed a -> a # foldl1 :: (a -> a -> a) -> Hashed a -> a # elem :: Eq a => a -> Hashed a -> Bool # maximum :: Ord a => Hashed a -> a # minimum :: Ord a => Hashed a -> a #  | |
| Foldable (Either a) | Since: base-4.7.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Either a m -> m # foldMap :: Monoid m => (a0 -> m) -> Either a a0 -> m # foldMap' :: Monoid m => (a0 -> m) -> Either a a0 -> m # foldr :: (a0 -> b -> b) -> b -> Either a a0 -> b # foldr' :: (a0 -> b -> b) -> b -> Either a a0 -> b # foldl :: (b -> a0 -> b) -> b -> Either a a0 -> b # foldl' :: (b -> a0 -> b) -> b -> Either a a0 -> b # foldr1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 # toList :: Either a a0 -> [a0] # length :: Either a a0 -> Int # elem :: Eq a0 => a0 -> Either a a0 -> Bool # maximum :: Ord a0 => Either a a0 -> a0 # minimum :: Ord a0 => Either a a0 -> a0 #  | |
| Foldable (V1 :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => V1 m -> m # foldMap :: Monoid m => (a -> m) -> V1 a -> m # foldMap' :: Monoid m => (a -> m) -> V1 a -> m # foldr :: (a -> b -> b) -> b -> V1 a -> b # foldr' :: (a -> b -> b) -> b -> V1 a -> b # foldl :: (b -> a -> b) -> b -> V1 a -> b # foldl' :: (b -> a -> b) -> b -> V1 a -> b # foldr1 :: (a -> a -> a) -> V1 a -> a # foldl1 :: (a -> a -> a) -> V1 a -> a # elem :: Eq a => a -> V1 a -> Bool # maximum :: Ord a => V1 a -> a #  | |
| Foldable (U1 :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => U1 m -> m # foldMap :: Monoid m => (a -> m) -> U1 a -> m # foldMap' :: Monoid m => (a -> m) -> U1 a -> m # foldr :: (a -> b -> b) -> b -> U1 a -> b # foldr' :: (a -> b -> b) -> b -> U1 a -> b # foldl :: (b -> a -> b) -> b -> U1 a -> b # foldl' :: (b -> a -> b) -> b -> U1 a -> b # foldr1 :: (a -> a -> a) -> U1 a -> a # foldl1 :: (a -> a -> a) -> U1 a -> a # elem :: Eq a => a -> U1 a -> Bool # maximum :: Ord a => U1 a -> a #  | |
| Foldable (UAddr :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UAddr m -> m # foldMap :: Monoid m => (a -> m) -> UAddr a -> m # foldMap' :: Monoid m => (a -> m) -> UAddr a -> m # foldr :: (a -> b -> b) -> b -> UAddr a -> b # foldr' :: (a -> b -> b) -> b -> UAddr a -> b # foldl :: (b -> a -> b) -> b -> UAddr a -> b # foldl' :: (b -> a -> b) -> b -> UAddr a -> b # foldr1 :: (a -> a -> a) -> UAddr a -> a # foldl1 :: (a -> a -> a) -> UAddr a -> a # elem :: Eq a => a -> UAddr a -> Bool # maximum :: Ord a => UAddr a -> a # minimum :: Ord a => UAddr a -> a #  | |
| Foldable (UChar :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UChar m -> m # foldMap :: Monoid m => (a -> m) -> UChar a -> m # foldMap' :: Monoid m => (a -> m) -> UChar a -> m # foldr :: (a -> b -> b) -> b -> UChar a -> b # foldr' :: (a -> b -> b) -> b -> UChar a -> b # foldl :: (b -> a -> b) -> b -> UChar a -> b # foldl' :: (b -> a -> b) -> b -> UChar a -> b # foldr1 :: (a -> a -> a) -> UChar a -> a # foldl1 :: (a -> a -> a) -> UChar a -> a # elem :: Eq a => a -> UChar a -> Bool # maximum :: Ord a => UChar a -> a # minimum :: Ord a => UChar a -> a #  | |
| Foldable (UDouble :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UDouble m -> m # foldMap :: Monoid m => (a -> m) -> UDouble a -> m # foldMap' :: Monoid m => (a -> m) -> UDouble a -> m # foldr :: (a -> b -> b) -> b -> UDouble a -> b # foldr' :: (a -> b -> b) -> b -> UDouble a -> b # foldl :: (b -> a -> b) -> b -> UDouble a -> b # foldl' :: (b -> a -> b) -> b -> UDouble a -> b # foldr1 :: (a -> a -> a) -> UDouble a -> a # foldl1 :: (a -> a -> a) -> UDouble a -> a # elem :: Eq a => a -> UDouble a -> Bool # maximum :: Ord a => UDouble a -> a # minimum :: Ord a => UDouble a -> a #  | |
| Foldable (UFloat :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UFloat m -> m # foldMap :: Monoid m => (a -> m) -> UFloat a -> m # foldMap' :: Monoid m => (a -> m) -> UFloat a -> m # foldr :: (a -> b -> b) -> b -> UFloat a -> b # foldr' :: (a -> b -> b) -> b -> UFloat a -> b # foldl :: (b -> a -> b) -> b -> UFloat a -> b # foldl' :: (b -> a -> b) -> b -> UFloat a -> b # foldr1 :: (a -> a -> a) -> UFloat a -> a # foldl1 :: (a -> a -> a) -> UFloat a -> a # elem :: Eq a => a -> UFloat a -> Bool # maximum :: Ord a => UFloat a -> a # minimum :: Ord a => UFloat a -> a #  | |
| Foldable (UInt :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UInt m -> m # foldMap :: Monoid m => (a -> m) -> UInt a -> m # foldMap' :: Monoid m => (a -> m) -> UInt a -> m # foldr :: (a -> b -> b) -> b -> UInt a -> b # foldr' :: (a -> b -> b) -> b -> UInt a -> b # foldl :: (b -> a -> b) -> b -> UInt a -> b # foldl' :: (b -> a -> b) -> b -> UInt a -> b # foldr1 :: (a -> a -> a) -> UInt a -> a # foldl1 :: (a -> a -> a) -> UInt a -> a # elem :: Eq a => a -> UInt a -> Bool # maximum :: Ord a => UInt a -> a #  | |
| Foldable (UWord :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => UWord m -> m # foldMap :: Monoid m => (a -> m) -> UWord a -> m # foldMap' :: Monoid m => (a -> m) -> UWord a -> m # foldr :: (a -> b -> b) -> b -> UWord a -> b # foldr' :: (a -> b -> b) -> b -> UWord a -> b # foldl :: (b -> a -> b) -> b -> UWord a -> b # foldl' :: (b -> a -> b) -> b -> UWord a -> b # foldr1 :: (a -> a -> a) -> UWord a -> a # foldl1 :: (a -> a -> a) -> UWord a -> a # elem :: Eq a => a -> UWord a -> Bool # maximum :: Ord a => UWord a -> a # minimum :: Ord a => UWord a -> a #  | |
| Foldable ((,) a) | Since: base-4.7.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => (a, m) -> m # foldMap :: Monoid m => (a0 -> m) -> (a, a0) -> m # foldMap' :: Monoid m => (a0 -> m) -> (a, a0) -> m # foldr :: (a0 -> b -> b) -> b -> (a, a0) -> b # foldr' :: (a0 -> b -> b) -> b -> (a, a0) -> b # foldl :: (b -> a0 -> b) -> b -> (a, a0) -> b # foldl' :: (b -> a0 -> b) -> b -> (a, a0) -> b # foldr1 :: (a0 -> a0 -> a0) -> (a, a0) -> a0 # foldl1 :: (a0 -> a0 -> a0) -> (a, a0) -> a0 # elem :: Eq a0 => a0 -> (a, a0) -> Bool # maximum :: Ord a0 => (a, a0) -> a0 # minimum :: Ord a0 => (a, a0) -> a0 #  | |
| Foldable (Array i) | Since: base-4.8.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Array i m -> m # foldMap :: Monoid m => (a -> m) -> Array i a -> m # foldMap' :: Monoid m => (a -> m) -> Array i a -> m # foldr :: (a -> b -> b) -> b -> Array i a -> b # foldr' :: (a -> b -> b) -> b -> Array i a -> b # foldl :: (b -> a -> b) -> b -> Array i a -> b # foldl' :: (b -> a -> b) -> b -> Array i a -> b # foldr1 :: (a -> a -> a) -> Array i a -> a # foldl1 :: (a -> a -> a) -> Array i a -> a # elem :: Eq a => a -> Array i a -> Bool # maximum :: Ord a => Array i a -> a # minimum :: Ord a => Array i a -> a #  | |
| Foldable (Proxy :: Type -> Type) | Since: base-4.7.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Proxy m -> m # foldMap :: Monoid m => (a -> m) -> Proxy a -> m # foldMap' :: Monoid m => (a -> m) -> Proxy a -> m # foldr :: (a -> b -> b) -> b -> Proxy a -> b # foldr' :: (a -> b -> b) -> b -> Proxy a -> b # foldl :: (b -> a -> b) -> b -> Proxy a -> b # foldl' :: (b -> a -> b) -> b -> Proxy a -> b # foldr1 :: (a -> a -> a) -> Proxy a -> a # foldl1 :: (a -> a -> a) -> Proxy a -> a # elem :: Eq a => a -> Proxy a -> Bool # maximum :: Ord a => Proxy a -> a # minimum :: Ord a => Proxy a -> a #  | |
| Foldable (Map k) | Folds in order of increasing key.  | 
Defined in Data.Map.Internal Methods fold :: Monoid m => Map k m -> m # foldMap :: Monoid m => (a -> m) -> Map k a -> m # foldMap' :: Monoid m => (a -> m) -> Map k a -> m # foldr :: (a -> b -> b) -> b -> Map k a -> b # foldr' :: (a -> b -> b) -> b -> Map k a -> b # foldl :: (b -> a -> b) -> b -> Map k a -> b # foldl' :: (b -> a -> b) -> b -> Map k a -> b # foldr1 :: (a -> a -> a) -> Map k a -> a # foldl1 :: (a -> a -> a) -> Map k a -> a # elem :: Eq a => a -> Map k a -> Bool # maximum :: Ord a => Map k a -> a # minimum :: Ord a => Map k a -> a #  | |
| Foldable f => Foldable (Rec1 f) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Rec1 f m -> m # foldMap :: Monoid m => (a -> m) -> Rec1 f a -> m # foldMap' :: Monoid m => (a -> m) -> Rec1 f a -> m # foldr :: (a -> b -> b) -> b -> Rec1 f a -> b # foldr' :: (a -> b -> b) -> b -> Rec1 f a -> b # foldl :: (b -> a -> b) -> b -> Rec1 f a -> b # foldl' :: (b -> a -> b) -> b -> Rec1 f a -> b # foldr1 :: (a -> a -> a) -> Rec1 f a -> a # foldl1 :: (a -> a -> a) -> Rec1 f a -> a # elem :: Eq a => a -> Rec1 f a -> Bool # maximum :: Ord a => Rec1 f a -> a # minimum :: Ord a => Rec1 f a -> a #  | |
| Foldable (Const m :: Type -> Type) | Since: base-4.7.0.0  | 
Defined in Data.Functor.Const Methods fold :: Monoid m0 => Const m m0 -> m0 # foldMap :: Monoid m0 => (a -> m0) -> Const m a -> m0 # foldMap' :: Monoid m0 => (a -> m0) -> Const m a -> m0 # foldr :: (a -> b -> b) -> b -> Const m a -> b # foldr' :: (a -> b -> b) -> b -> Const m a -> b # foldl :: (b -> a -> b) -> b -> Const m a -> b # foldl' :: (b -> a -> b) -> b -> Const m a -> b # foldr1 :: (a -> a -> a) -> Const m a -> a # foldl1 :: (a -> a -> a) -> Const m a -> a # elem :: Eq a => a -> Const m a -> Bool # maximum :: Ord a => Const m a -> a # minimum :: Ord a => Const m a -> a #  | |
| Foldable f => Foldable (Ap f) | Since: base-4.12.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Ap f m -> m # foldMap :: Monoid m => (a -> m) -> Ap f a -> m # foldMap' :: Monoid m => (a -> m) -> Ap f a -> m # foldr :: (a -> b -> b) -> b -> Ap f a -> b # foldr' :: (a -> b -> b) -> b -> Ap f a -> b # foldl :: (b -> a -> b) -> b -> Ap f a -> b # foldl' :: (b -> a -> b) -> b -> Ap f a -> b # foldr1 :: (a -> a -> a) -> Ap f a -> a # foldl1 :: (a -> a -> a) -> Ap f a -> a # elem :: Eq a => a -> Ap f a -> Bool # maximum :: Ord a => Ap f a -> a #  | |
| Foldable f => Foldable (Alt f) | Since: base-4.12.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Alt f m -> m # foldMap :: Monoid m => (a -> m) -> Alt f a -> m # foldMap' :: Monoid m => (a -> m) -> Alt f a -> m # foldr :: (a -> b -> b) -> b -> Alt f a -> b # foldr' :: (a -> b -> b) -> b -> Alt f a -> b # foldl :: (b -> a -> b) -> b -> Alt f a -> b # foldl' :: (b -> a -> b) -> b -> Alt f a -> b # foldr1 :: (a -> a -> a) -> Alt f a -> a # foldl1 :: (a -> a -> a) -> Alt f a -> a # elem :: Eq a => a -> Alt f a -> Bool # maximum :: Ord a => Alt f a -> a # minimum :: Ord a => Alt f a -> a #  | |
| Foldable (K1 i c :: Type -> Type) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => K1 i c m -> m # foldMap :: Monoid m => (a -> m) -> K1 i c a -> m # foldMap' :: Monoid m => (a -> m) -> K1 i c a -> m # foldr :: (a -> b -> b) -> b -> K1 i c a -> b # foldr' :: (a -> b -> b) -> b -> K1 i c a -> b # foldl :: (b -> a -> b) -> b -> K1 i c a -> b # foldl' :: (b -> a -> b) -> b -> K1 i c a -> b # foldr1 :: (a -> a -> a) -> K1 i c a -> a # foldl1 :: (a -> a -> a) -> K1 i c a -> a # elem :: Eq a => a -> K1 i c a -> Bool # maximum :: Ord a => K1 i c a -> a # minimum :: Ord a => K1 i c a -> a #  | |
| (Foldable f, Foldable g) => Foldable (f :+: g) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => (f :+: g) m -> m # foldMap :: Monoid m => (a -> m) -> (f :+: g) a -> m # foldMap' :: Monoid m => (a -> m) -> (f :+: g) a -> m # foldr :: (a -> b -> b) -> b -> (f :+: g) a -> b # foldr' :: (a -> b -> b) -> b -> (f :+: g) a -> b # foldl :: (b -> a -> b) -> b -> (f :+: g) a -> b # foldl' :: (b -> a -> b) -> b -> (f :+: g) a -> b # foldr1 :: (a -> a -> a) -> (f :+: g) a -> a # foldl1 :: (a -> a -> a) -> (f :+: g) a -> a # toList :: (f :+: g) a -> [a] # length :: (f :+: g) a -> Int # elem :: Eq a => a -> (f :+: g) a -> Bool # maximum :: Ord a => (f :+: g) a -> a # minimum :: Ord a => (f :+: g) a -> a #  | |
| (Foldable f, Foldable g) => Foldable (f :*: g) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => (f :*: g) m -> m # foldMap :: Monoid m => (a -> m) -> (f :*: g) a -> m # foldMap' :: Monoid m => (a -> m) -> (f :*: g) a -> m # foldr :: (a -> b -> b) -> b -> (f :*: g) a -> b # foldr' :: (a -> b -> b) -> b -> (f :*: g) a -> b # foldl :: (b -> a -> b) -> b -> (f :*: g) a -> b # foldl' :: (b -> a -> b) -> b -> (f :*: g) a -> b # foldr1 :: (a -> a -> a) -> (f :*: g) a -> a # foldl1 :: (a -> a -> a) -> (f :*: g) a -> a # toList :: (f :*: g) a -> [a] # length :: (f :*: g) a -> Int # elem :: Eq a => a -> (f :*: g) a -> Bool # maximum :: Ord a => (f :*: g) a -> a # minimum :: Ord a => (f :*: g) a -> a #  | |
| Foldable f => Foldable (M1 i c f) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => M1 i c f m -> m # foldMap :: Monoid m => (a -> m) -> M1 i c f a -> m # foldMap' :: Monoid m => (a -> m) -> M1 i c f a -> m # foldr :: (a -> b -> b) -> b -> M1 i c f a -> b # foldr' :: (a -> b -> b) -> b -> M1 i c f a -> b # foldl :: (b -> a -> b) -> b -> M1 i c f a -> b # foldl' :: (b -> a -> b) -> b -> M1 i c f a -> b # foldr1 :: (a -> a -> a) -> M1 i c f a -> a # foldl1 :: (a -> a -> a) -> M1 i c f a -> a # elem :: Eq a => a -> M1 i c f a -> Bool # maximum :: Ord a => M1 i c f a -> a # minimum :: Ord a => M1 i c f a -> a #  | |
| (Foldable f, Foldable g) => Foldable (f :.: g) | Since: base-4.9.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => (f :.: g) m -> m # foldMap :: Monoid m => (a -> m) -> (f :.: g) a -> m # foldMap' :: Monoid m => (a -> m) -> (f :.: g) a -> m # foldr :: (a -> b -> b) -> b -> (f :.: g) a -> b # foldr' :: (a -> b -> b) -> b -> (f :.: g) a -> b # foldl :: (b -> a -> b) -> b -> (f :.: g) a -> b # foldl' :: (b -> a -> b) -> b -> (f :.: g) a -> b # foldr1 :: (a -> a -> a) -> (f :.: g) a -> a # foldl1 :: (a -> a -> a) -> (f :.: g) a -> a # toList :: (f :.: g) a -> [a] # length :: (f :.: g) a -> Int # elem :: Eq a => a -> (f :.: g) a -> Bool # maximum :: Ord a => (f :.: g) a -> a # minimum :: Ord a => (f :.: g) a -> a #  | |
class (Functor t, Foldable t) => Traversable (t :: Type -> Type) where #
Functors representing data structures that can be traversed from left to right.
A definition of traverse must satisfy the following laws:
- Naturality
 t .for every applicative transformationtraversef =traverse(t . f)t- Identity
 traverseIdentity=Identity- Composition
 traverse(Compose.fmapg . f) =Compose.fmap(traverseg) .traversef
A definition of sequenceA must satisfy the following laws:
- Naturality
 t .for every applicative transformationsequenceA=sequenceA.fmaptt- Identity
 sequenceA.fmapIdentity=Identity- Composition
 sequenceA.fmapCompose=Compose.fmapsequenceA.sequenceA
where an applicative transformation is a function
t :: (Applicative f, Applicative g) => f a -> g a
preserving the Applicative operations, i.e.
t (purex) =purex t (f<*>x) = t f<*>t x
and the identity functor Identity and composition functors
 Compose are from Data.Functor.Identity and
 Data.Functor.Compose.
A result of the naturality law is a purity law for traverse
traversepure=pure
(The naturality law is implied by parametricity and thus so is the purity law [1, p15].)
Instances are similar to Functor, e.g. given a data type
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
a suitable instance would be
instance Traversable Tree where traverse f Empty = pure Empty traverse f (Leaf x) = Leaf <$> f x traverse f (Node l k r) = Node <$> traverse f l <*> f k <*> traverse f r
This is suitable even for abstract types, as the laws for <*>
 imply a form of associativity.
The superclass instances should satisfy the following:
- In the 
Functorinstance,fmapshould be equivalent to traversal with the identity applicative functor (fmapDefault). - In the 
Foldableinstance,foldMapshould be equivalent to traversal with a constant applicative functor (foldMapDefault). 
References: [1] The Essence of the Iterator Pattern, Jeremy Gibbons and Bruno C. d. S. Oliveira
Methods
traverse :: Applicative f => (a -> f b) -> t a -> f (t b) #
Map each element of a structure to an action, evaluate these actions
 from left to right, and collect the results. For a version that ignores
 the results see traverse_.
Instances
| Traversable [] | Since: base-2.1  | 
Defined in Data.Traversable  | |
| Traversable Maybe | Since: base-2.1  | 
| Traversable Par1 | Since: base-4.9.0.0  | 
| Traversable ZipList | Since: base-4.9.0.0  | 
| Traversable Identity | Since: base-4.9.0.0  | 
| Traversable First | Since: base-4.8.0.0  | 
| Traversable Last | Since: base-4.8.0.0  | 
| Traversable Dual | Since: base-4.8.0.0  | 
| Traversable Sum | Since: base-4.8.0.0  | 
| Traversable Product | Since: base-4.8.0.0  | 
| Traversable Down | Since: base-4.12.0.0  | 
| Traversable NonEmpty | Since: base-4.9.0.0  | 
| Traversable Seq | |
| Traversable FingerTree | |
Defined in Data.Sequence.Internal Methods traverse :: Applicative f => (a -> f b) -> FingerTree a -> f (FingerTree b) # sequenceA :: Applicative f => FingerTree (f a) -> f (FingerTree a) # mapM :: Monad m => (a -> m b) -> FingerTree a -> m (FingerTree b) # sequence :: Monad m => FingerTree (m a) -> m (FingerTree a) #  | |
| Traversable Digit | |
| Traversable Node | |
| Traversable Elem | |
| Traversable ViewL | |
| Traversable ViewR | |
| Traversable (Either a) | Since: base-4.7.0.0  | 
Defined in Data.Traversable  | |
| Traversable (V1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (U1 :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UAddr :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UChar :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UDouble :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UFloat :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UInt :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable (UWord :: Type -> Type) | Since: base-4.9.0.0  | 
| Traversable ((,) a) | Since: base-4.7.0.0  | 
Defined in Data.Traversable  | |
| Ix i => Traversable (Array i) | Since: base-2.1  | 
| Traversable (Proxy :: Type -> Type) | Since: base-4.7.0.0  | 
| Traversable (Map k) | Traverses in order of increasing key.  | 
| Traversable f => Traversable (Rec1 f) | Since: base-4.9.0.0  | 
| Traversable (Const m :: Type -> Type) | Since: base-4.7.0.0  | 
| Traversable f => Traversable (Ap f) | Since: base-4.12.0.0  | 
| Traversable f => Traversable (Alt f) | Since: base-4.12.0.0  | 
| Traversable (K1 i c :: Type -> Type) | Since: base-4.9.0.0  | 
| (Traversable f, Traversable g) => Traversable (f :+: g) | Since: base-4.9.0.0  | 
Defined in Data.Traversable  | |
| (Traversable f, Traversable g) => Traversable (f :*: g) | Since: base-4.9.0.0  | 
Defined in Data.Traversable  | |
| Traversable f => Traversable (M1 i c f) | Since: base-4.9.0.0  | 
| (Traversable f, Traversable g) => Traversable (f :.: g) | Since: base-4.9.0.0  | 
Defined in Data.Traversable  | |
Representable types of kind *.
 This class is derivable in GHC with the DeriveGeneric flag on.
A Generic instance must satisfy the following laws:
from.to≡idto.from≡id
Instances
The class of semigroups (types with an associative binary operation).
Instances should satisfy the following:
Since: base-4.9.0.0
Instances
| Semigroup Ordering | Since: base-4.9.0.0  | 
| Semigroup () | Since: base-4.9.0.0  | 
| Semigroup [a] | Since: base-4.9.0.0  | 
| Semigroup a => Semigroup (Maybe a) | Since: base-4.9.0.0  | 
| Semigroup a => Semigroup (IO a) | Since: base-4.10.0.0  | 
| Semigroup p => Semigroup (Par1 p) | Since: base-4.12.0.0  | 
| Semigroup a => Semigroup (Identity a) | Since: base-4.9.0.0  | 
| Semigroup (NonEmpty a) | Since: base-4.9.0.0  | 
| Semigroup (Seq a) | Since: containers-0.5.7  | 
| Ord a => Semigroup (Set a) | Since: containers-0.5.7  | 
| Semigroup (MergeSet a) | |
| Semigroup b => Semigroup (a -> b) | Since: base-4.9.0.0  | 
| Semigroup (Either a b) | Since: base-4.9.0.0  | 
| Semigroup (V1 p) | Since: base-4.12.0.0  | 
| Semigroup (U1 p) | Since: base-4.12.0.0  | 
| (Semigroup a, Semigroup b) => Semigroup (a, b) | Since: base-4.9.0.0  | 
| Ord k => Semigroup (Map k v) | |
| Semigroup (f p) => Semigroup (Rec1 f p) | Since: base-4.12.0.0  | 
| (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c) | Since: base-4.9.0.0  | 
| Semigroup a => Semigroup (Const a b) | Since: base-4.9.0.0  | 
| Semigroup c => Semigroup (K1 i c p) | Since: base-4.12.0.0  | 
| (Semigroup (f p), Semigroup (g p)) => Semigroup ((f :*: g) p) | Since: base-4.12.0.0  | 
| (Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d) | Since: base-4.9.0.0  | 
| Semigroup (f p) => Semigroup (M1 i c f p) | Since: base-4.12.0.0  | 
| Semigroup (f (g p)) => Semigroup ((f :.: g) p) | Since: base-4.12.0.0  | 
| (Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e) | Since: base-4.9.0.0  | 
class Semigroup a => Monoid a where #
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)<>zSemigrouplaw)- 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.
Instances
| Monoid Ordering | Since: base-2.1  | 
| Monoid () | Since: base-2.1  | 
| Monoid [a] | Since: base-2.1  | 
| Semigroup a => Monoid (Maybe a) | Lift a semigroup into  Since 4.11.0: constraint on inner  Since: base-2.1  | 
| Monoid a => Monoid (IO a) | Since: base-4.9.0.0  | 
| Monoid p => Monoid (Par1 p) | Since: base-4.12.0.0  | 
| Monoid a => Monoid (Identity a) | Since: base-4.9.0.0  | 
| Monoid (Seq a) | |
| Ord a => Monoid (Set a) | |
| Monoid (MergeSet a) | |
| Monoid b => Monoid (a -> b) | Since: base-2.1  | 
| Monoid (U1 p) | Since: base-4.12.0.0  | 
| (Monoid a, Monoid b) => Monoid (a, b) | Since: base-2.1  | 
| Ord k => Monoid (Map k v) | |
| Monoid (f p) => Monoid (Rec1 f p) | Since: base-4.12.0.0  | 
| (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c) | Since: base-2.1  | 
| Monoid a => Monoid (Const a b) | Since: base-4.9.0.0  | 
| Monoid c => Monoid (K1 i c p) | Since: base-4.12.0.0  | 
| (Monoid (f p), Monoid (g p)) => Monoid ((f :*: g) p) | Since: base-4.12.0.0  | 
| (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d) | Since: base-2.1  | 
| Monoid (f p) => Monoid (M1 i c f p) | Since: base-4.12.0.0  | 
| Monoid (f (g p)) => Monoid ((f :.: g) p) | Since: base-4.12.0.0  | 
| (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e) | Since: base-2.1  | 
Instances
| Eq Bool | |
| Ord Bool | |
| Show Bool | Since: base-2.1  | 
| Generic Bool | Since: base-4.6.0.0  | 
| NFData Bool | |
Defined in Control.DeepSeq  | |
| Hashable Bool | |
Defined in Data.Hashable.Class  | |
| SingKind Bool | Since: base-4.9.0.0  | 
Defined in GHC.Generics Associated Types type DemoteRep Bool  | |
| Lift Bool | |
| SingI 'False | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| SingI 'True | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| type Rep Bool | |
| type DemoteRep Bool | |
Defined in GHC.Generics  | |
| data Sing (a :: Bool) | |
The Maybe type encapsulates an optional value.  A value of type
  either contains a value of type Maybe aa (represented as ),
 or it is empty (represented as Just aNothing).  Using Maybe is a good way to
 deal with errors or exceptional cases without resorting to drastic
 measures such as error.
The Maybe type is also a monad.  It is a simple kind of error
 monad, where all errors are represented by Nothing.  A richer
 error monad can be built using the Either type.
Instances
| Monad Maybe | Since: base-2.1  | 
| Functor Maybe | Since: base-2.1  | 
| Applicative Maybe | Since: base-2.1  | 
| Foldable Maybe | Since: base-2.1  | 
Defined in Data.Foldable Methods fold :: Monoid m => Maybe m -> m # foldMap :: Monoid m => (a -> m) -> Maybe a -> m # foldMap' :: Monoid m => (a -> m) -> Maybe a -> m # foldr :: (a -> b -> b) -> b -> Maybe a -> b # foldr' :: (a -> b -> b) -> b -> Maybe a -> b # foldl :: (b -> a -> b) -> b -> Maybe a -> b # foldl' :: (b -> a -> b) -> b -> Maybe a -> b # foldr1 :: (a -> a -> a) -> Maybe a -> a # foldl1 :: (a -> a -> a) -> Maybe a -> a # elem :: Eq a => a -> Maybe a -> Bool # maximum :: Ord a => Maybe a -> a # minimum :: Ord a => Maybe a -> a #  | |
| Traversable Maybe | Since: base-2.1  | 
| Alternative Maybe | Since: base-2.1  | 
| MonadPlus Maybe | Since: base-2.1  | 
| NFData1 Maybe | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| Hashable1 Maybe | |
Defined in Data.Hashable.Class  | |
| Lift a => Lift (Maybe a :: Type) | |
| Eq a => Eq (Maybe a) | Since: base-2.1  | 
| Ord a => Ord (Maybe a) | Since: base-2.1  | 
| Show a => Show (Maybe a) | Since: base-2.1  | 
| Generic (Maybe a) | Since: base-4.6.0.0  | 
| Semigroup a => Semigroup (Maybe a) | Since: base-4.9.0.0  | 
| Semigroup a => Monoid (Maybe a) | Lift a semigroup into  Since 4.11.0: constraint on inner  Since: base-2.1  | 
| NFData a => NFData (Maybe a) | |
Defined in Control.DeepSeq  | |
| Hashable a => Hashable (Maybe a) | |
Defined in Data.Hashable.Class  | |
| Ixed (Maybe a) | |
| At (Maybe a) | |
| AsEmpty (Maybe a) | |
Defined in Optics.Empty.Core  | |
| SingKind a => SingKind (Maybe a) | Since: base-4.9.0.0  | 
Defined in GHC.Generics Associated Types type DemoteRep (Maybe a)  | |
| Generic1 Maybe | Since: base-4.6.0.0  | 
| SingI ('Nothing :: Maybe a) | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| SingI a2 => SingI ('Just a2 :: Maybe a1) | Since: base-4.9.0.0  | 
Defined in GHC.Generics  | |
| type Rep (Maybe a) | |
Defined in GHC.Generics  | |
| type Index (Maybe a) | |
Defined in Optics.At.Core  | |
| type IxValue (Maybe a) | |
Defined in Optics.At.Core  | |
| type IxKind (Maybe a) | |
Defined in Optics.At.Core  | |
| type DemoteRep (Maybe a) | |
Defined in GHC.Generics  | |
| data Sing (b :: Maybe a) | |
| type Rep1 Maybe | |
Constructors
| EQ | 
Instances
| Eq Ordering | |
| Ord Ordering | |
Defined in GHC.Classes  | |
| Show Ordering | Since: base-2.1  | 
| Generic Ordering | Since: base-4.6.0.0  | 
| Semigroup Ordering | Since: base-4.9.0.0  | 
| Monoid Ordering | Since: base-2.1  | 
| NFData Ordering | |
Defined in Control.DeepSeq  | |
| Hashable Ordering | |
Defined in Data.Hashable.Class  | |
| AsEmpty Ordering | |
Defined in Optics.Empty.Core  | |
| type Rep Ordering | |
The Either type represents values with two possibilities: a value of
type  is either Either a b or Left a.Right b
The Either type is sometimes used to represent a value which is
either correct or an error; by convention, the Left constructor is
used to hold an error value and the Right constructor is used to
hold a correct value (mnemonic: "right" also means "correct").
Examples
The type  is the type of values which can be either
a Either String IntString or an Int. The Left constructor can be used only on
Strings, and the Right constructor can be used only on Ints:
>>>let s = Left "foo" :: Either String Int>>>sLeft "foo">>>let n = Right 3 :: Either String Int>>>nRight 3>>>:type ss :: Either String Int>>>:type nn :: Either String Int
The fmap from our Functor instance will ignore Left values, but
will apply the supplied function to values contained in a Right:
>>>let s = Left "foo" :: Either String Int>>>let n = Right 3 :: Either String Int>>>fmap (*2) sLeft "foo">>>fmap (*2) nRight 6
The Monad instance for Either allows us to chain together multiple
actions which may fail, and fail overall if any of the individual
steps failed. First we'll write a function that can either parse an
Int from a Char, or fail.
>>>import Data.Char ( digitToInt, isDigit )>>>:{let parseEither :: Char -> Either String Int parseEither c | isDigit c = Right (digitToInt c) | otherwise = Left "parse error">>>:}
The following should work, since both '1' and '2' can be
parsed as Ints.
>>>:{let parseMultiple :: Either String Int parseMultiple = do x <- parseEither '1' y <- parseEither '2' return (x + y)>>>:}
>>>parseMultipleRight 3
But the following should fail overall, since the first operation where
we attempt to parse 'm' as an Int will fail:
>>>:{let parseMultiple :: Either String Int parseMultiple = do x <- parseEither 'm' y <- parseEither '2' return (x + y)>>>:}
>>>parseMultipleLeft "parse error"
Instances
| NFData2 Either | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| Hashable2 Either | |
Defined in Data.Hashable.Class  | |
| Swapped Either | |
| (Lift a, Lift b) => Lift (Either a b :: Type) | |
| Monad (Either e) | Since: base-4.4.0.0  | 
| Functor (Either a) | Since: base-3.0  | 
| Applicative (Either e) | Since: base-3.0  | 
| Foldable (Either a) | Since: base-4.7.0.0  | 
Defined in Data.Foldable Methods fold :: Monoid m => Either a m -> m # foldMap :: Monoid m => (a0 -> m) -> Either a a0 -> m # foldMap' :: Monoid m => (a0 -> m) -> Either a a0 -> m # foldr :: (a0 -> b -> b) -> b -> Either a a0 -> b # foldr' :: (a0 -> b -> b) -> b -> Either a a0 -> b # foldl :: (b -> a0 -> b) -> b -> Either a a0 -> b # foldl' :: (b -> a0 -> b) -> b -> Either a a0 -> b # foldr1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 # foldl1 :: (a0 -> a0 -> a0) -> Either a a0 -> a0 # toList :: Either a a0 -> [a0] # length :: Either a a0 -> Int # elem :: Eq a0 => a0 -> Either a a0 -> Bool # maximum :: Ord a0 => Either a a0 -> a0 # minimum :: Ord a0 => Either a a0 -> a0 #  | |
| Traversable (Either a) | Since: base-4.7.0.0  | 
Defined in Data.Traversable  | |
| NFData a => NFData1 (Either a) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| Hashable a => Hashable1 (Either a) | |
Defined in Data.Hashable.Class  | |
| Generic1 (Either a :: Type -> Type) | Since: base-4.6.0.0  | 
| (Eq a, Eq b) => Eq (Either a b) | Since: base-2.1  | 
| (Ord a, Ord b) => Ord (Either a b) | Since: base-2.1  | 
| (Read a, Read b) => Read (Either a b) | Since: base-3.0  | 
| (Show a, Show b) => Show (Either a b) | Since: base-3.0  | 
| Generic (Either a b) | Since: base-4.6.0.0  | 
| Semigroup (Either a b) | Since: base-4.9.0.0  | 
| (NFData a, NFData b) => NFData (Either a b) | |
Defined in Control.DeepSeq  | |
| (Hashable a, Hashable b) => Hashable (Either a b) | |
Defined in Data.Hashable.Class  | |
| type Rep1 (Either a :: Type -> Type) | |
Defined in GHC.Generics type Rep1 (Either a :: Type -> Type) = D1 ('MetaData "Either" "Data.Either" "base" 'False) (C1 ('MetaCons "Left" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Right" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) Par1))  | |
| type Rep (Either a b) | |
Defined in GHC.Generics type Rep (Either a b) = D1 ('MetaData "Either" "Data.Either" "base" 'False) (C1 ('MetaCons "Left" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 a)) :+: C1 ('MetaCons "Right" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 b)))  | |
The Item type function returns the type of items of the structure
   l.
Instances
| type Item CallStack | |
| type Item Version | |
| type Item Text | |
Defined in Data.Text.Lazy  | |
| type Item Text | |
| type Item [a] | |
| type Item (ZipList a) | |
| type Item (NonEmpty a) | |
| type Item (Seq a) | |
Defined in Data.Sequence.Internal  | |
| type Item (Set a) | |
Defined in Data.Set.Internal  | |
| type Item (Map k v) | |
Defined in Data.Map.Internal  | |
Identity functor and monad. (a non-strict monad)
Since: base-4.8.0.0
Constructors
| Identity | |
Fields 
  | |
Instances
either :: (a -> c) -> (b -> c) -> Either a b -> c #
Case analysis for the Either type.
 If the value is , apply the first function to Left aa;
 if it is , apply the second function to Right bb.
Examples
We create two values of type , one using the
 Either String IntLeft constructor and another using the Right constructor. Then
 we apply "either" the length function (if we have a String)
 or the "times-two" function (if we have an Int):
>>>let s = Left "foo" :: Either String Int>>>let n = Right 3 :: Either String Int>>>either length (*2) s3>>>either length (*2) n6
mapMaybe :: (a -> Maybe b) -> [a] -> [b] #
The mapMaybe function is a version of map which can throw
 out elements.  In particular, the functional argument returns
 something of type .  If this is Maybe bNothing, no element
 is added on to the result list.  If it is , then Just bb is
 included in the result list.
Examples
Using  is a shortcut for mapMaybe f x
 in most cases:catMaybes $ map f x
>>>import Text.Read ( readMaybe )>>>let readMaybeInt = readMaybe :: String -> Maybe Int>>>mapMaybe readMaybeInt ["1", "Foo", "3"][1,3]>>>catMaybes $ map readMaybeInt ["1", "Foo", "3"][1,3]
If we map the Just constructor, the entire list should be returned:
>>>mapMaybe Just [1,2,3][1,2,3]
fromMaybe :: a -> Maybe a -> a #
The fromMaybe function takes a default value and and Maybe
 value.  If the Maybe is Nothing, it returns the default values;
 otherwise, it returns the value contained in the Maybe.
Examples
Basic usage:
>>>fromMaybe "" (Just "Hello, World!")"Hello, World!"
>>>fromMaybe "" Nothing""
Read an integer from a string using readMaybe. If we fail to
 parse an integer, we want to return 0 by default:
>>>import Text.Read ( readMaybe )>>>fromMaybe 0 (readMaybe "5")5>>>fromMaybe 0 (readMaybe "")0
maybe :: b -> (a -> b) -> Maybe a -> b #
The maybe function takes a default value, a function, and a Maybe
 value.  If the Maybe value is Nothing, the function returns the
 default value.  Otherwise, it applies the function to the value inside
 the Just and returns the result.
Examples
Basic usage:
>>>maybe False odd (Just 3)True
>>>maybe False odd NothingFalse
Read an integer from a string using readMaybe. If we succeed,
 return twice the integer; that is, apply (*2) to it. If instead
 we fail to parse an integer, return 0 by default:
>>>import Text.Read ( readMaybe )>>>maybe 0 (*2) (readMaybe "5")10>>>maybe 0 (*2) (readMaybe "")0
Apply show to a Maybe Int. If we have Just n, we want to show
 the underlying Int n. But if we have Nothing, we return the
 empty string instead of (for example) "Nothing":
>>>maybe "" show (Just 5)"5">>>maybe "" show Nothing""
(<$>) :: Functor f => (a -> b) -> f a -> f b infixl 4 #
An infix synonym for fmap.
The name of this operator is an allusion to $.
 Note the similarities between their types:
($) :: (a -> b) -> a -> b (<$>) :: Functor f => (a -> b) -> f a -> f b
Whereas $ is function application, <$> is function
 application lifted over a Functor.
Examples
Convert from a  to a Maybe Int using Maybe
 Stringshow:
>>>show <$> NothingNothing>>>show <$> Just 3Just "3"
Convert from an  to an
 Either Int IntEither IntString using show:
>>>show <$> Left 17Left 17>>>show <$> Right 17Right "17"
Double each element of a list:
>>>(*2) <$> [1,2,3][2,4,6]
Apply even to the second element of a pair:
>>>even <$> (2,2)(2,True)
const x is a unary function which evaluates to x for all inputs.
>>>const 42 "hello"42
>>>map (const 42) [0..3][42,42,42,42]
(=<<) :: Monad m => (a -> m b) -> m a -> m b infixr 1 #
Same as >>=, but with the arguments interchanged.
(<|>) :: Alternative f => f a -> f a -> f a infixl 3 #
An associative binary operation
A Map from keys k to values a.
The Semigroup operation for Map is union, which prefers
 values from the left operand. If m1 maps a key k to a value
 a1, and m2 maps the same key to a different value a2, then
 their union m1 <> m2 maps k to a1.
Instances
| Eq2 Map | Since: containers-0.5.9  | 
| Ord2 Map | Since: containers-0.5.9  | 
Defined in Data.Map.Internal  | |
| Show2 Map | Since: containers-0.5.9  | 
| Hashable2 Map | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Functor (Map k) | |
| Foldable (Map k) | Folds in order of increasing key.  | 
Defined in Data.Map.Internal Methods fold :: Monoid m => Map k m -> m # foldMap :: Monoid m => (a -> m) -> Map k a -> m # foldMap' :: Monoid m => (a -> m) -> Map k a -> m # foldr :: (a -> b -> b) -> b -> Map k a -> b # foldr' :: (a -> b -> b) -> b -> Map k a -> b # foldl :: (b -> a -> b) -> b -> Map k a -> b # foldl' :: (b -> a -> b) -> b -> Map k a -> b # foldr1 :: (a -> a -> a) -> Map k a -> a # foldl1 :: (a -> a -> a) -> Map k a -> a # elem :: Eq a => a -> Map k a -> Bool # maximum :: Ord a => Map k a -> a # minimum :: Ord a => Map k a -> a #  | |
| Traversable (Map k) | Traverses in order of increasing key.  | 
| Eq k => Eq1 (Map k) | Since: containers-0.5.9  | 
| Ord k => Ord1 (Map k) | Since: containers-0.5.9  | 
Defined in Data.Map.Internal  | |
| (Ord k, Read k) => Read1 (Map k) | Since: containers-0.5.9  | 
Defined in Data.Map.Internal  | |
| Show k => Show1 (Map k) | Since: containers-0.5.9  | 
| Hashable k => Hashable1 (Map k) | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Ord k => IsList (Map k v) | Since: containers-0.5.6.2  | 
| (Eq k, Eq a) => Eq (Map k a) | |
| (Data k, Data a, Ord k) => Data (Map k a) | |
Defined in Data.Map.Internal Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Map k a -> c (Map k a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Map k a) # toConstr :: Map k a -> Constr # dataTypeOf :: Map k a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Map k a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Map k a)) # gmapT :: (forall b. Data b => b -> b) -> Map k a -> Map k a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Map k a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Map k a -> r # gmapQ :: (forall d. Data d => d -> u) -> Map k a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Map k a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Map k a -> m (Map k a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Map k a -> m (Map k a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Map k a -> m (Map k a) #  | |
| (Ord k, Ord v) => Ord (Map k v) | |
| (Ord k, Read k, Read e) => Read (Map k e) | |
| (Show k, Show a) => Show (Map k a) | |
| Ord k => Semigroup (Map k v) | |
| Ord k => Monoid (Map k v) | |
| (NFData k, NFData a) => NFData (Map k a) | |
Defined in Data.Map.Internal  | |
| (Hashable k, Hashable v) => Hashable (Map k v) | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Ord k => Ixed (Map k a) | |
| Ord k => At (Map k a) | |
| AsEmpty (Map k a) | |
Defined in Optics.Empty.Core  | |
| type Item (Map k v) | |
Defined in Data.Map.Internal  | |
| type Index (Map k a) | |
Defined in Optics.At.Core  | |
| type IxValue (Map k a) | |
Defined in Optics.At.Core  | |
| type IxKind (Map k a) | |
Defined in Optics.At.Core  | |
General-purpose finite sequences.
Instances
| Monad Seq | |
| Functor Seq | |
| MonadFix Seq | Since: containers-0.5.11  | 
Defined in Data.Sequence.Internal  | |
| Applicative Seq | Since: containers-0.5.4  | 
| Foldable Seq | |
Defined in Data.Sequence.Internal Methods fold :: Monoid m => Seq m -> m # foldMap :: Monoid m => (a -> m) -> Seq a -> m # foldMap' :: Monoid m => (a -> m) -> Seq a -> m # foldr :: (a -> b -> b) -> b -> Seq a -> b # foldr' :: (a -> b -> b) -> b -> Seq a -> b # foldl :: (b -> a -> b) -> b -> Seq a -> b # foldl' :: (b -> a -> b) -> b -> Seq a -> b # foldr1 :: (a -> a -> a) -> Seq a -> a # foldl1 :: (a -> a -> a) -> Seq a -> a # elem :: Eq a => a -> Seq a -> Bool # maximum :: Ord a => Seq a -> a #  | |
| Traversable Seq | |
| Eq1 Seq | Since: containers-0.5.9  | 
| Ord1 Seq | Since: containers-0.5.9  | 
Defined in Data.Sequence.Internal  | |
| Read1 Seq | Since: containers-0.5.9  | 
Defined in Data.Sequence.Internal  | |
| Show1 Seq | Since: containers-0.5.9  | 
| MonadZip Seq | 
 
  | 
| Alternative Seq | Since: containers-0.5.4  | 
| MonadPlus Seq | |
| Hashable1 Seq | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| UnzipWith Seq | |
Defined in Data.Sequence.Internal Methods unzipWith' :: (x -> (a, b)) -> Seq x -> (Seq a, Seq b)  | |
| IsList (Seq a) | |
| Eq a => Eq (Seq a) | |
| Data a => Data (Seq a) | |
Defined in Data.Sequence.Internal Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Seq a -> c (Seq a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Seq a) # dataTypeOf :: Seq a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Seq a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Seq a)) # gmapT :: (forall b. Data b => b -> b) -> Seq a -> Seq a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Seq a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Seq a -> r # gmapQ :: (forall d. Data d => d -> u) -> Seq a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Seq a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Seq a -> m (Seq a) #  | |
| Ord a => Ord (Seq a) | |
| Read a => Read (Seq a) | |
| Show a => Show (Seq a) | |
| a ~ Char => IsString (Seq a) | Since: containers-0.5.7  | 
Defined in Data.Sequence.Internal Methods fromString :: String -> Seq a #  | |
| Semigroup (Seq a) | Since: containers-0.5.7  | 
| Monoid (Seq a) | |
| NFData a => NFData (Seq a) | |
Defined in Data.Sequence.Internal  | |
| Hashable v => Hashable (Seq v) | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Ixed (Seq a) | |
| AsEmpty (Seq a) | |
Defined in Optics.Empty.Core  | |
| type Item (Seq a) | |
Defined in Data.Sequence.Internal  | |
| type Index (Seq a) | |
Defined in Optics.At.Core  | |
| type IxValue (Seq a) | |
Defined in Optics.At.Core  | |
| type IxKind (Seq a) | |
Defined in Optics.At.Core  | |
A set of values a.
Instances
| Foldable Set | Folds in order of increasing key.  | 
Defined in Data.Set.Internal Methods fold :: Monoid m => Set m -> m # foldMap :: Monoid m => (a -> m) -> Set a -> m # foldMap' :: Monoid m => (a -> m) -> Set a -> m # foldr :: (a -> b -> b) -> b -> Set a -> b # foldr' :: (a -> b -> b) -> b -> Set a -> b # foldl :: (b -> a -> b) -> b -> Set a -> b # foldl' :: (b -> a -> b) -> b -> Set a -> b # foldr1 :: (a -> a -> a) -> Set a -> a # foldl1 :: (a -> a -> a) -> Set a -> a # elem :: Eq a => a -> Set a -> Bool # maximum :: Ord a => Set a -> a #  | |
| Eq1 Set | Since: containers-0.5.9  | 
| Ord1 Set | Since: containers-0.5.9  | 
Defined in Data.Set.Internal  | |
| Show1 Set | Since: containers-0.5.9  | 
| Hashable1 Set | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Ord a => IsList (Set a) | Since: containers-0.5.6.2  | 
| Eq a => Eq (Set a) | |
| (Data a, Ord a) => Data (Set a) | |
Defined in Data.Set.Internal Methods gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Set a -> c (Set a) # gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c (Set a) # dataTypeOf :: Set a -> DataType # dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c (Set a)) # dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c (Set a)) # gmapT :: (forall b. Data b => b -> b) -> Set a -> Set a # gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Set a -> r # gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Set a -> r # gmapQ :: (forall d. Data d => d -> u) -> Set a -> [u] # gmapQi :: Int -> (forall d. Data d => d -> u) -> Set a -> u # gmapM :: Monad m => (forall d. Data d => d -> m d) -> Set a -> m (Set a) # gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Set a -> m (Set a) # gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Set a -> m (Set a) #  | |
| Ord a => Ord (Set a) | |
| (Read a, Ord a) => Read (Set a) | |
| Show a => Show (Set a) | |
| Ord a => Semigroup (Set a) | Since: containers-0.5.7  | 
| Ord a => Monoid (Set a) | |
| NFData a => NFData (Set a) | |
Defined in Data.Set.Internal  | |
| Hashable v => Hashable (Set v) | Since: hashable-1.3.4.0  | 
Defined in Data.Hashable.Class  | |
| Ord a => Contains (Set a) | |
| Ord k => Ixed (Set k) | |
| Ord k => At (Set k) | |
| AsEmpty (Set a) | |
Defined in Optics.Empty.Core  | |
| type Item (Set a) | |
Defined in Data.Set.Internal  | |
| type Index (Set a) | |
Defined in Optics.At.Core  | |
| type IxValue (Set k) | |
Defined in Optics.At.Core  | |
| type IxKind (Set k) | |
Defined in Optics.At.Core  | |
A class of types that can be fully evaluated.
Since: deepseq-1.1.0.0
Instances
| NFData Bool | |
Defined in Control.DeepSeq  | |
| NFData Char | |
Defined in Control.DeepSeq  | |
| NFData Double | |
Defined in Control.DeepSeq  | |
| NFData Float | |
Defined in Control.DeepSeq  | |
| NFData Int | |
Defined in Control.DeepSeq  | |
| NFData Int8 | |
Defined in Control.DeepSeq  | |
| NFData Int16 | |
Defined in Control.DeepSeq  | |
| NFData Int32 | |
Defined in Control.DeepSeq  | |
| NFData Int64 | |
Defined in Control.DeepSeq  | |
| NFData Integer | |
Defined in Control.DeepSeq  | |
| NFData Natural | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Ordering | |
Defined in Control.DeepSeq  | |
| NFData Word | |
Defined in Control.DeepSeq  | |
| NFData Word8 | |
Defined in Control.DeepSeq  | |
| NFData Word16 | |
Defined in Control.DeepSeq  | |
| NFData Word32 | |
Defined in Control.DeepSeq  | |
| NFData Word64 | |
Defined in Control.DeepSeq  | |
| NFData CallStack | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData () | |
Defined in Control.DeepSeq  | |
| NFData TyCon | NOTE: Prior to  Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Void | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Unique | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Version | Since: deepseq-1.3.0.0  | 
Defined in Control.DeepSeq  | |
| NFData ThreadId | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData ExitCode | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData MaskingState | Since: deepseq-1.4.4.0  | 
Defined in Control.DeepSeq Methods rnf :: MaskingState -> () #  | |
| NFData TypeRep | NOTE: Prior to  Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData All | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Any | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CChar | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CSChar | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUChar | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CShort | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUShort | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CInt | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUInt | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CLong | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CULong | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CLLong | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CULLong | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CBool | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| NFData CFloat | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CDouble | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CPtrdiff | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CSize | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CWchar | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CSigAtomic | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq Methods rnf :: CSigAtomic -> () #  | |
| NFData CClock | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CTime | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUSeconds | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CSUSeconds | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq Methods rnf :: CSUSeconds -> () #  | |
| NFData CFile | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CFpos | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CJmpBuf | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CIntPtr | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUIntPtr | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CIntMax | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData CUIntMax | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData Fingerprint | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq Methods rnf :: Fingerprint -> () #  | |
| NFData SrcLoc | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData [a] | |
Defined in Control.DeepSeq  | |
| NFData a => NFData (Maybe a) | |
Defined in Control.DeepSeq  | |
| NFData a => NFData (Ratio a) | |
Defined in Control.DeepSeq  | |
| NFData (Ptr a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData (FunPtr a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Complex a) | |
Defined in Control.DeepSeq  | |
| NFData a => NFData (Min a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Max a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (First a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Last a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData m => NFData (WrappedMonoid m) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq Methods rnf :: WrappedMonoid m -> () #  | |
| NFData a => NFData (Option a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData (StableName a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq Methods rnf :: StableName a -> () #  | |
| NFData a => NFData (ZipList a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Identity a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData (IORef a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (First a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Last a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Dual a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Sum a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Product a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Down a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData (MVar a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (NonEmpty a) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData a => NFData (Seq a) | |
Defined in Data.Sequence.Internal  | |
| NFData a => NFData (FingerTree a) | |
Defined in Data.Sequence.Internal Methods rnf :: FingerTree a -> () #  | |
| NFData a => NFData (Digit a) | |
Defined in Data.Sequence.Internal  | |
| NFData a => NFData (Node a) | |
Defined in Data.Sequence.Internal  | |
| NFData a => NFData (Elem a) | |
Defined in Data.Sequence.Internal  | |
| NFData a => NFData (Set a) | |
Defined in Data.Set.Internal  | |
| NFData a => NFData (Hashed a) | |
Defined in Data.Hashable.Class  | |
| NFData (a -> b) | This instance is for convenience and consistency with  Since: deepseq-1.3.0.0  | 
Defined in Control.DeepSeq  | |
| (NFData a, NFData b) => NFData (Either a b) | |
Defined in Control.DeepSeq  | |
| (NFData a, NFData b) => NFData (a, b) | |
Defined in Control.DeepSeq  | |
| (NFData a, NFData b) => NFData (Array a b) | |
Defined in Control.DeepSeq  | |
| NFData (Fixed a) | Since: deepseq-1.3.0.0  | 
Defined in Control.DeepSeq  | |
| (NFData a, NFData b) => NFData (Arg a b) | Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| NFData (Proxy a) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData (STRef s a) | NOTE: Only strict in the reference and not the referenced value. Since: deepseq-1.4.2.0  | 
Defined in Control.DeepSeq  | |
| (NFData k, NFData a) => NFData (Map k a) | |
Defined in Data.Map.Internal  | |
| (NFData a1, NFData a2, NFData a3) => NFData (a1, a2, a3) | |
Defined in Control.DeepSeq  | |
| NFData a => NFData (Const a b) | Since: deepseq-1.4.0.0  | 
Defined in Control.DeepSeq  | |
| NFData (a :~: b) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4) => NFData (a1, a2, a3, a4) | |
Defined in Control.DeepSeq  | |
| (NFData1 f, NFData1 g, NFData a) => NFData (Product f g a) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| (NFData1 f, NFData1 g, NFData a) => NFData (Sum f g a) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| NFData (a :~~: b) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5) => NFData (a1, a2, a3, a4, a5) | |
Defined in Control.DeepSeq  | |
| (NFData1 f, NFData1 g, NFData a) => NFData (Compose f g a) | Since: deepseq-1.4.3.0  | 
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6) => NFData (a1, a2, a3, a4, a5, a6) | |
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7) => NFData (a1, a2, a3, a4, a5, a6, a7) | |
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8) => NFData (a1, a2, a3, a4, a5, a6, a7, a8) | |
Defined in Control.DeepSeq  | |
| (NFData a1, NFData a2, NFData a3, NFData a4, NFData a5, NFData a6, NFData a7, NFData a8, NFData a9) => NFData (a1, a2, a3, a4, a5, a6, a7, a8, a9) | |
Defined in Control.DeepSeq  | |
The class of types that can be converted to a hash value.
Minimal implementation: hashWithSalt.
Note: the hash is not guaranteed to be stable across library versions, operating systems or architectures. For stable hashing use named hashes: SHA256, CRC32 etc.
If you are looking for Hashable instance in time package,
 check time-compat
Instances
_1 :: Field1 s t a b => Lens s t a b #
Access the 1st field of a tuple (and possibly change its type).
>>>(1,2) ^. _11
>>>(1,2) & _1 .~ "hello"("hello",2)
>>>traverseOf _1 putStrLn ("hello","world")hello ((),"world")
This can also be used on larger tuples as well:
>>>(1,2,3,4,5) & _1 %~ (+41)(42,2,3,4,5)
_2 :: Field2 s t a b => Lens s t a b #
Access the 2nd field of a tuple.
>>>_2 .~ "hello" $ (1,(),3,4)(1,"hello",3,4)
>>>(1,2,3,4) & _2 %~ (*3)(1,6,3,4)
>>>traverseOf _2 print (1,2)2 (1,())
adjoin :: forall k l (is :: IxList) s a (js :: IxList). (Is k A_Traversal, Is l A_Traversal) => Optic' k is s a -> Optic' l js s a -> Traversal' s a infixr 6 #
Combine two disjoint traversals into one.
>>>over (_1 % _Just `adjoin` _2 % _Right) not (Just True, Right False)(Just False,Right True)
Note: if the argument traversals are not disjoint, the result will not
 respect the Traversal laws, because it will visit the same element multiple
 times.  See section 7 of
 Understanding Idiomatic Traversals Backwards and Forwards
 by Bird et al. for why this is illegal.
>>>view (partsOf (each `adjoin` _1)) ('x','y')"xyx">>>set (partsOf (each `adjoin` _1)) "abc" ('x','y')('c','b')
For the Fold version see summing.
Since: optics-core-0.4
traversed :: Traversable t => Traversal (t a) (t b) a b #
Construct a Traversal via the Traversable class.
traverseOftraversed=traverse
traverseOf :: forall k f (is :: IxList) s t a b. (Is k A_Traversal, Applicative f) => Optic k is s t a b -> (a -> f b) -> s -> f t #
Map each element of a structure targeted by a Traversal, evaluate these
 actions from left to right, and collect the results.
traversalVL :: TraversalVL s t a b -> Traversal s t a b #
Build a traversal from the van Laarhoven representation.
traversalVL.traverseOf≡idtraverseOf.traversalVL≡id
type Traversal s t a b = Optic A_Traversal NoIx s t a b #
Type synonym for a type-modifying traversal.
type Traversal' s a = Optic' A_Traversal NoIx s a #
Type synonym for a type-preserving traversal.
over :: forall k (is :: IxList) s t a b. Is k A_Setter => Optic k is s t a b -> (a -> b) -> s -> t #
Apply a setter as a modifier.
pattern Empty :: AsEmpty a => a #
Pattern synonym for matching on any type with an AsEmpty instance.
>>>case Nothing of { Empty -> True; _ -> False }True
coerced :: (Coercible s a, Coercible t b) => Iso s t a b #
Data types that are representationally equal are isomorphic.
>>>view coerced 'x' :: Identity CharIdentity 'x'
equality :: (s ~ a, t ~ b) => Iso s t a b #
Capture type constraints as an isomorphism.
Note: This is the identity optic:
>>>:t view equalityview equality :: a -> a
iso :: (s -> a) -> (b -> t) -> Iso s t a b #
Build an iso from a pair of inverse functions.
If you want to build an Iso from the van Laarhoven representation, use
 isoVL from the optics-vl package.
review :: forall k (is :: IxList) t b. Is k A_Review => Optic' k is t b -> b -> t #
Retrieve the value targeted by a Review.
>>>review _Left "hi"Left "hi"
re :: forall (is :: IxList) s t a b. (ReversibleOptic k, AcceptsEmptyIndices "re" is) => Optic k is s t a b -> Optic (ReversedOptic k) is b a t s #
Reverses optics, turning around Iso into Iso,
 Prism into ReversedPrism (and
 back), Lens into ReversedLens (and back)
 and Getter into Review (and back).
afailing :: forall k l (is :: IxList) s a (js :: IxList). (Is k An_AffineFold, Is l An_AffineFold) => Optic' k is s a -> Optic' l js s a -> AffineFold s a infixl 3 #
Try the first AffineFold. If it returns no entry, try the second one.
>>>preview (ix 1 % re _Left `afailing` ix 2 % re _Right) [0,1,2,3]Just (Left 1)
>>>preview (ix 42 % re _Left `afailing` ix 2 % re _Right) [0,1,2,3]Just (Right 2)
afolding :: (s -> Maybe a) -> AffineFold s a #
Create an AffineFold from a partial function.
>>>preview (afolding listToMaybe) "foo"Just 'f'
preview :: forall k (is :: IxList) s a. Is k An_AffineFold => Optic' k is s a -> s -> Maybe a #
Retrieve the value targeted by an AffineFold.
>>>let _Right = prism Right $ either (Left . Left) Right
>>>preview _Right (Right 'x')Just 'x'
>>>preview _Right (Left 'y')Nothing
type AffineFold s a = Optic' An_AffineFold NoIx s a #
Type synonym for an affine fold.
matching :: forall k (is :: IxList) s t a b. Is k An_AffineTraversal => Optic k is s t a b -> s -> Either t a #
atraversal :: (s -> Either t a) -> (s -> b -> t) -> AffineTraversal s t a b #
Build an affine traversal from a matcher and an updater.
If you want to build an AffineTraversal from the van Laarhoven
 representation, use atraversalVL.
type AffineTraversal s t a b = Optic An_AffineTraversal NoIx s t a b #
Type synonym for a type-modifying affine traversal.
type AffineTraversal' s a = Optic' An_AffineTraversal NoIx s a #
Type synonym for a type-preserving affine traversal.
(%) :: forall k l m (is :: IxList) (js :: IxList) (ks :: IxList) s t u v a b. (JoinKinds k l m, AppendIndices is js ks) => Optic k is s t u v -> Optic l js u v a b -> Optic m ks s t a b infixl 9 #
Compose two optics of compatible flavours.
Returns an optic of the appropriate supertype. If either or both optics are indexed, the composition preserves all the indices.
castOptic :: forall destKind srcKind (is :: IxList) s t a b. Is srcKind destKind => Optic srcKind is s t a b -> Optic destKind is s t a b #
data Optic k (is :: IxList) s t a b #
Wrapper newtype for the whole family of optics.
The first parameter k identifies the particular optic kind (e.g. A_Lens
 or A_Traversal).
The parameter is is a list of types available as indices.  This will
 typically be NoIx for unindexed optics, or WithIx for optics with a
 single index. See the "Indexed optics" section of the overview documentation
 in the Optics module of the main optics package for more details.
The parameters s and t represent the "big" structure,
 whereas a and b represent the "small" structure.
type Optic' k (is :: IxList) s a = Optic k is s s a a #
Common special case of Optic where source and target types are equal.
Here, we need only one "big" and one "small" type. For lenses, this means that in the restricted form we cannot do type-changing updates.
Subtyping relationship between kinds of optics.
An instance of  means that any Is k l can be used
 as an Optic k. For example, we have an Optic l instance, but not Is A_Lens
 A_Traversal.Is A_Traversal A_Lens
This class needs instances for all possible combinations of tags.
Minimal complete definition
Instances
class JoinKinds k l m | k l -> m #
Computes the least upper bound of two optics kinds.
In presence of a JoinKinds k l m constraint Optic m represents the least
 upper bound of an Optic k and an Optic l. This means in particular that
 composition of an Optic k and an Optic k will yield an Optic m.
Since: optics-core-0.4
Minimal complete definition
Instances
Tag for an iso.
Instances
Tag for a lens.
Instances
data An_AffineTraversal #
Tag for an affine traversal.
Instances
data A_Traversal #
Tag for a traversal.
Instances
Tag for a getter.
Instances
data An_AffineFold #
Tag for an affine fold.
Instances
Tag for a fold.
Instances
A space efficient, packed, unboxed Unicode text type.
mapFromSet :: (k -> a) -> Set k -> Map k a Source #
mapKeysSet :: Map k a -> Set k Source #
mapFoldMapWithKey :: Monoid m => (k -> a -> m) -> Map k a -> m Source #
seqReduceR :: b -> (a -> Seq a -> b) -> Seq a -> b Source #
seqFromMaybe :: Maybe a -> Seq a Source #
seqSingleton :: Prism' (Seq a) a Source #