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

GHC 9.14.1 · lts/ghc-9.14.x · d82dee8 · 2026-10-12

Modulecardano-prelude-0.2.2.0Haskell2010

Cardano.Prelude

  • 121 types
  • 50 classes
  • 471 values
valueasync :: IO a -> IO (Async a)
#

Spawn an asynchronous action in a separate thread.

Like for forkIO, the action may be left running unintentionally (see module-level documentation for details).

Use withAsync style functions wherever you can instead!

valuecancel :: Async a -> IO ()
#

Cancel an asynchronous action by throwing the AsyncCancelled exception to it, and waiting for the Async thread to quit. Has no effect if the Async has already completed.

cancel a = throwTo (asyncThreadId a) AsyncCancelled <* waitCatch a

Note that cancel will not terminate until the thread the Async refers to has terminated. This means that cancel will block for as long said thread blocks when receiving an asynchronous exception.

For example, it could block if:

  • It's executing a foreign call, and thus cannot receive the asynchronous exception;

  • It's executing some cleanup handler after having received the exception, and the handler is blocking.

valuecancelWith :: Exception e => Async a -> e -> IO ()
#

Cancel an asynchronous action by throwing the supplied exception to it.

cancelWith a x = throwTo (asyncThreadId a) x

The notes about the synchronous nature of cancel also apply to cancelWith.

valueconcurrently :: IO a -> IO b -> IO (a, b)
#

Run two IO actions concurrently, and return both results. If either action throws an exception at any time, then the other action is cancelled, and the exception is re-thrown by concurrently.

concurrently left right =
  withAsync left $ \a ->
  withAsync right $ \b ->
  waitBoth a b

To run more than two actions concurrently, see mapConcurrently.

valuepoll :: Async a -> IO (Maybe (Either SomeException a))
#

Check whether an Async has completed yet. If it has not completed yet, then the result is Nothing, otherwise the result is Just e where e is Left x if the Async raised an exception x, or Right a if it returned a value a.

poll = atomically . pollSTM
valuerace :: IO a -> IO b -> IO (Either a b)
#

Run two IO actions concurrently, and return the first to finish. The loser of the race is cancelled.

race left right =
  withAsync left $ \a ->
  withAsync right $ \b ->
  waitEither a b
valuewait :: Async a -> IO a
#

Wait for an asynchronous action to complete, and return its value. If the asynchronous action threw an exception, then the exception is re-thrown by wait.

wait = atomically . waitSTM
valuewaitAny :: [Async a] -> IO (Async a, a)
#

Wait for any of the supplied Asyncs to complete. If the first to complete throws an exception, then that exception is re-thrown by waitAny. The input list must be non-empty.

If multiple Asyncs complete or have completed, then the value returned corresponds to the first completed Async in the list.

valuewaitAnyCatch :: [Async a] -> IO (Async a, Either SomeException a)
#

Wait for any of the supplied asynchronous operations to complete. The value returned is a pair of the Async that completed, and the result that would be returned by wait on that Async. The input list must be non-empty.

If multiple Asyncs complete or have completed, then the value returned corresponds to the first completed Async in the list.

valuewaitBoth :: Async a -> Async b -> IO (a, b)
#

Waits for both Asyncs to finish, but if either of them throws an exception before they have both finished, then the exception is re-thrown by waitBoth.

valuewaitCatch :: Async a -> IO (Either SomeException a)
#

Wait for an asynchronous action to complete, and return either Left e if the action raised an exception e, or Right a if it returned a value a.

waitCatch = atomically . waitCatchSTM
valuewaitEither :: Async a -> Async b -> IO (Either a b)
#

Wait for the first of two Asyncs to finish. If the Async that finished first raised an exception, then the exception is re-thrown by waitEither.

valuewithAsync :: IO a -> (Async a -> IO b) -> IO b
#

Spawn an asynchronous action in a separate thread, and pass its Async handle to the supplied function. When the function returns or throws an exception, uninterruptibleCancel is called on the Async.

withAsync action inner = mask $ \restore -> do
  a <- async (restore action)
  restore (inner a) `finally` uninterruptibleCancel a

This is a useful variant of async that ensures an Async is never left running unintentionally.

Note: a reference to the child thread is kept alive until the call to withAsync returns, so nesting many withAsync calls requires linear memory.

valueoptional :: Alternative f => f a -> f (Maybe a)
#

One or none.

It is useful for modelling any computation that is allowed to fail.

Examples

Using the Alternative instance of Control.Monad.Except, the following functions:

Example1 expression
import Control.Monad.Except
Example2 expressions
canFail = throwError "it failed" :: Except String Intfinal = return 42                :: Except String Int

Can be combined by allowing the first function to fail:

Example1 expression
runExcept $ canFail *> finalLeft "it failed"
Example1 expression
runExcept $ optional canFail *> finalRight 42
valueforkFinally :: IO a -> (Either SomeException a -> IO ()) -> IO ThreadId
#

Fork a thread and call the supplied function when the thread is about to terminate, with an exception or a returned value. The function is called with asynchronous exceptions masked.

forkFinally action and_then =
  mask $ \restore ->
    forkIO $ try (restore action) >>= and_then

This function is useful for informing the parent when a child terminates, for example.

valuethreadWaitRead :: Fd -> IO ()
#

Block the current thread until data is available to read on the given file descriptor (GHC only).

This will throw an IOError if the file descriptor was closed while this thread was blocked. To safely close a file descriptor that has been used with threadWaitRead, use closeFdWith.

valuethreadWaitReadSTM :: Fd -> IO (STM (), IO ())
#

Returns an STM action that can be used to wait for data to read from a file descriptor. The second returned value is an IO action that can be used to deregister interest in the file descriptor.

valuethreadWaitWrite :: Fd -> IO ()
#

Block the current thread until data can be written to the given file descriptor (GHC only).

This will throw an IOError if the file descriptor was closed while this thread was blocked. To safely close a file descriptor that has been used with threadWaitWrite, use closeFdWith.

valuethreadWaitWriteSTM :: Fd -> IO (STM (), IO ())
#

Returns an STM action that can be used to wait until data can be written to a file descriptor. The second returned value is an IO action that can be used to deregister interest in the file descriptor.

valuedigitToInt :: Char -> Int
#

Convert a single digit Char to the corresponding Int. This function fails unless its argument satisfies isHexDigit, but recognises both upper- and lower-case hexadecimal digits (that is, '0'..'9', 'a'..'f', 'A'..'F').

Examples

Characters '0' through '9' are converted properly to 0..9:

Example1 expression
map digitToInt ['0'..'9'][0,1,2,3,4,5,6,7,8,9]

Both upper- and lower-case 'A' through 'F' are converted as well, to 10..15.

Example2 expressions
map digitToInt ['a'..'f'][10,11,12,13,14,15]map digitToInt ['A'..'F'][10,11,12,13,14,15]

Anything else throws an exception:

Example2 expressions
digitToInt 'G'*** Exception: Char.digitToInt: not a digit 'G'digitToInt '♥'*** Exception: Char.digitToInt: not a digit '\9829'
valueisLetter :: Char -> Bool
#

Selects alphabetic Unicode characters (lower-case, upper-case and title-case letters, plus letters of caseless scripts and modifiers letters). This function is equivalent to isAlpha.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Letter".

Examples

Basic usage:

Example7 expressions
isLetter 'a'TrueisLetter 'A'TrueisLetter 'λ'TrueisLetter '0'FalseisLetter '%'FalseisLetter '♥'FalseisLetter '\31'False

Ensure that isLetter and isAlpha are equivalent.

Example4 expressions
let chars = [(chr 0)..]let letters = map isLetter charslet alphas = map isAlpha charsletters == alphasTrue
valueisMark :: Char -> Bool
#

Selects Unicode mark characters, for example accents and the like, which combine with preceding characters.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Mark".

Examples

Basic usage:

Example2 expressions
isMark 'a'FalseisMark '0'False

Combining marks such as accent characters usually need to follow another character before they become printable:

Example1 expression
map isMark "ò"[False,True]

Puns are not necessarily supported:

Example1 expression
isMark '✓'False
valueisNumber :: Char -> Bool
#

Selects Unicode numeric characters, including digits from various scripts, Roman numerals, et cetera.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Number".

Examples

Basic usage:

Example3 expressions
isNumber 'a'FalseisNumber '%'FalseisNumber '3'True

ASCII '0' through '9' are all numbers:

Example1 expression
and $ map isNumber ['0'..'9']True

Unicode Roman numerals are "numbers" as well:

Example1 expression
isNumber 'Ⅸ'True
valueisSeparator :: Char -> Bool
#

Selects Unicode space and separator characters.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Separator".

Examples

Basic usage:

Example3 expressions
isSeparator 'a'FalseisSeparator '6'FalseisSeparator ' 'True

Warning: newlines and tab characters are not considered separators.

Example2 expressions
isSeparator '\n'FalseisSeparator '\t'False

But some more exotic characters are (like HTML's &nbsp;):

Example1 expression
isSeparator '\160'True
valuediff :: Semigroup m => m -> Endo m
#

This lets you use a difference list of a Semigroup as a Monoid.

Examples
Example1 expression
let hello = diff "Hello, "
Example1 expression
appEndo hello "World!""Hello, World!"
Example1 expression
appEndo (hello <> mempty) "World!""Hello, World!"
Example1 expression
appEndo (mempty <> hello) "World!""Hello, World!"
Example2 expressions
let world = diff "World"let excl = diff "!"
Example1 expression
appEndo (hello <> (world <> excl)) mempty"Hello, World!"
Example1 expression
appEndo ((hello <> world) <> excl) mempty"Hello, World!"
valuelength :: HasLength a => a -> Int
#

We can pass several things here, as long as they have length.

valueliftM2' :: Monad m => (a -> b -> c) -> m a -> m b -> m c
#
valueputTextLn :: Text -> IO ()
#

Explicit output with Text since that is what we want most of the time. We don't want to look at the type errors or warnings arising.

value(&&^) :: Monad m => m Bool -> m Bool -> m Bool
#

The && operator lifted to a monad. If the first argument evaluates to False the second argument will not be evaluated.

value(||^) :: Monad m => m Bool -> m Bool -> m Bool
#

The || operator lifted to a monad. If the first argument evaluates to True the second argument will not be evaluated.

valuewrapError :: MonadError e' m => Either e a -> (e -> e') -> m a
#

A helper for lifting an Either to a MonadError

By using this function infix we can move the error handling to the end of an expression, hopefully improving readability.

valueisNormalForm :: a -> IO Bool
#

The function isNormalForm checks whether its argument is fully evaluated and deeply evaluated.

NOTE: The normal form check can be quite brittle, especially with -O0. For example, writing something like

let !(Value x) = ... in ....

might translate to

let !.. = ... in ... (case ... of Value x -> x)

which would trivially be False. In general, isNormalForm should probably only be used with -O1, but even then the answer may still depend on internal decisions made by ghc during compilation.

Compute the size of the given closure

This is a wrapper around computeHeapSize' which sets some defaults for the capacity of worklist and the visited set: it uses a worklist capacity of 10k (which, assuming balanced data structures, should be more than enough), an initial visited set capacity of 250k, and a maximum visited set capacity of 16M. This means that this will use between 2 MB and 128 MB of heaps space.

It also does NOT perform GC before counting, for improved performance. Client code can call performMajorGC manually or use computeHeapSize'.

Should these limits not be sufficient, or conversely, the memory requirements be too large, use computeHeapSize' directly.

valuecomputeHeapSize'
  1. :: PerformGC

    Should we call GC before counting?

  2. -> Word

    Capacity of the worklist

  3. -> Word

    Initial capacity of the visited set

  4. -> Word

    Maximum capacity of the visited set

  5. -> a
  6. -> IO (Either CountFailure Word64)
#

Compute the size of the given closure

The size of the worklist should be set to the maximum expected depth of the closure; the size of the visited set should be set to the maximum /number of nodes/ in the closure.

computeHeapSizeWorkList can be used to estimate the size of the worklist required.

Upper bound on the required work list size to compute closure size

NOTE: This ignores sharing, and so provides an upper bound only.

The size of a closure with no nested pointers can be computed without any stack space.

When we have a closure with (N + 1) nested pointers

p0 p1 .. pN

We will

  • Push pN, .., p1, p0 onto the stack

  • Pop off p0 and count its children

  • Pop off p1 and count its children

  • ..

until we have processed all children. This means that the stack space required will be the maximum of

[ N + 1 -- For the initial list
, requiredWorkList p0 + (N + 1) - 1
, requiredWorkList p1 + (N + 1) - 2
, ..
, requiredWorkList pN + (N + 1) - (N + 1)
]

For example, for a list, we would get that

requiredWorkList []     == 0
requiredWorkList (x:xs) == max [ 2
                               , requiredWorkList x + 1
                               , requiredWorkList xs
                               ]

which, for a list of Int (which requires only a stack of size 1), equals 2 (unless the list is empty).

Similarly, for binary trees, we get

requiredWorkList Leaf           == 0
requiredWorkList (Branch l x r) == max [ 3
                                       , requiredWorkList l + 2
                                       , requiredWorkList x + 1
                                       , requiredWorkList r
                                       ]

which, for a tree of Int, is bound by (height * 2) + 1.

valueforceElemsToWHNF :: Foldable t => t a -> t a
#

Force all of the elements of a Foldable to weak head normal form.

In order to ensure that all of the elements of a Foldable are strict, we can simply foldMap over it and seq each value with (). However, ()'s mappend implementation is actually completely lazy: _ <> _ = () So, in order to work around this, we instead utilize this newly defined StrictUnit whose mappend implementation is specifically strict.

value($!!) :: NFData a => (a -> b) -> a -> b
#

The deep analogue of $!. f $!! x fully evaluates x before returning f x.

There is no guarantee about the ordering of evaluation. f x may be evaluated before x is fully evaluated. To impose an actual order on evaluation, use pseq from Control.Parallel in the parallel package.

valueforce :: NFData a => a -> a
#

A variant of deepseq that is useful in some circumstances:

force x = x `deepseq` x

force x fully evaluates x, and then returns it. Note that force x only performs evaluation when the value of force x itself is demanded, so essentially it turns shallow evaluation into deep evaluation.

force can be conveniently used in combination with ViewPatterns:

{-# LANGUAGE BangPatterns, ViewPatterns #-}
import Control.DeepSeq

someFun :: ComplexData -> SomeResult
someFun (force -> !arg) = {- 'arg' will be fully evaluated -}

Another useful application is to combine force with evaluate in order to force deep evaluation relative to other IO operations:

import Control.Exception (evaluate)
import Control.DeepSeq

main = do
  result <- evaluate $ force $ pureComputation
  {- 'result' will be fully evaluated at this point -}
  return ()

Finally, here's an exception safe variant of the readFile' example:

readFile' :: FilePath -> IO String
readFile' fn = bracket (openFile fn ReadMode) hClose $ \h ->
                       evaluate . force =<< hGetContents h
value($) :: (a -> b) -> a -> b
#

($) is the function application operator.

Applying ($) to a function f and an argument x gives the same result as applying f to x directly. The definition is akin to this:

($) :: (a -> b) -> a -> b
($) f x = f x

This is id specialized from a -> a to (a -> b) -> (a -> b) which by the associativity of (->) is the same as (a -> b) -> a -> b.

On the face of it, this may appear pointless! But it's actually one of the most useful and important operators in Haskell.

The order of operations is very different between ($) and normal function application. Normal function application has precedence 10 - higher than any operator - and associates to the left. So these two definitions are equivalent:

expr = min 5 1 + 5
expr = ((min 5) 1) + 5

($) has precedence 0 (the lowest) and associates to the right, so these are equivalent:

expr = min 5 $ 1 + 5
expr = (min 5) (1 + 5)
Examples

A common use cases of ($) is to avoid parentheses in complex expressions.

For example, instead of using nested parentheses in the following Haskell function:

-- | Sum numbers in a string: strSum "100  5 -7" == 98
strSum :: String -> Int
strSum s = sum (mapMaybe readMaybe (words s))

we can deploy the function application operator:

-- | Sum numbers in a string: strSum "100  5 -7" == 98
strSum :: String -> Int
strSum s = sum $ mapMaybe readMaybe $ words s

($) is also used as a section (a partially applied operator), in order to indicate that we wish to apply some yet-unspecified function to a given value. For example, to apply the argument 5 to a list of functions:

applyFive :: [Int]
applyFive = map ($ 5) [(+1), (2^)]
>>> [6, 32]
Technical Remark (Representation Polymorphism)

($) is fully representation-polymorphic. This allows it to also be used with arguments of unlifted and even unboxed kinds, such as unboxed integers:

fastMod :: Int -> Int -> Int
fastMod (I# x) (I# m) = I# $ remInt# x m
value($!) :: (a -> b) -> a -> b
#

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

value(++) :: [a] -> [a] -> [a]
#

(++) appends two lists, i.e.,

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

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

Performance considerations

This function takes linear time in the number of elements of the first list. Thus it is better to associate repeated applications of (++) to the right (which is the default behaviour): xs ++ (ys ++ zs) or simply xs ++ ys ++ zs, but not (xs ++ ys) ++ zs. For the same reason GHC.Internal.Data.List.concat = GHC.Internal.Data.List.foldr (++) [] has linear performance, while GHC.Internal.Data.List.foldl (++) [] is prone to quadratic slowdown

Examples
Example1 expression
[1, 2, 3] ++ [4, 5, 6][1,2,3,4,5,6]
Example1 expression
[] ++ [1, 2, 3][1,2,3]
Example1 expression
[3, 2, 1] ++ [][3,2,1]
value(<**>) :: Applicative f => f a -> f (a -> b) -> f b
#

A variant of <*> with the types of the arguments reversed. It differs from flip (<*>) in that the effects are resolved in the order the arguments are presented.

Examples
Example1 expression
(<**>) (print 1) (id <$ print 2)12
Example1 expression
flip (<*>) (print 1) (id <$ print 2)21
Example1 expression
ZipList [4, 5, 6] <**> ZipList [(+1), (*2), (/3)]ZipList {getZipList = [5.0,10.0,2.0]}
value(=<<) :: Monad m => (a -> m b) -> m a -> m b
#

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

as >>= f == f =<< as
valueabsurd :: Void -> a
#

Since Void values logically don't exist, this witnesses the logical reasoning tool of "ex falso quodlibet".

Example2 expressions
let x :: Either Void Int; x = Right 5:{case x of    Right r -> r    Left l  -> absurd l:}5
valueap :: Monad m => m (a -> b) -> m a -> m b
#

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

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

is equivalent to

liftM<n> f x1 x2 ... xn
Examples
Example1 expression
pure (\x y z -> x + y * z) `ap` Just 1 `ap` Just 5 `ap` Just 10Just 51
valueconst :: a -> b -> a
#

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

const x = \_ -> x

This function might seem useless at first glance, but it can be very useful in a higher order context.

Examples
Example1 expression
const 42 "hello"42
Example1 expression
map (const 42) [0..3][42,42,42,42]
valueflip :: (a -> b -> c) -> b -> a -> c
#

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

Property
flip f x y = f y x
Property
flip . flip = id
Examples
Example1 expression
flip (++) "hello" "world""worldhello"
Example1 expression
let (.>) = flip (.) in (+1) .> show $ 5"6"
valuejoin :: Monad m => m (m a) -> m a
#

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

'join bss' can be understood as the do expression

do bs <- bss
   bs
Examples
Example1 expression
join [[1, 2, 3], [4, 5, 6], [7, 8, 9]][1,2,3,4,5,6,7,8,9]
Example1 expression
join (Just (Just 3))Just 3

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

GHC.Internal.Conc.atomically :: STM a -> IO a

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

GHC.Internal.Conc.atomically :: STM (IO b) -> IO (IO b)
join       :: IO (IO b)  -> IO b

we can compose them as

join . GHC.Internal.Conc.atomically :: STM (IO b) -> IO b

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

valueliftA :: Applicative f => (a -> b) -> f a -> f b
#

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

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

Examples

Using the Applicative instance for Lists:

Example1 expression
liftA (+1) [1, 2][2,3]

Or the Applicative instance for Maybe

Example1 expression
liftA (+1) (Just 3)Just 4
valueliftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d
#

Lift a ternary function to actions.

valueliftM :: Monad m => (a1 -> r) -> m a1 -> m r
#

Promote a function to a monad. This is equivalent to fmap but specialised to Monads.

valueliftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r
#

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

Examples
Example1 expression
liftM2 (+) [0,1] [0,2][0,2,1,3]
Example1 expression
liftM2 (+) (Just 1) NothingNothing
Example1 expression
liftM2 (+) (+ 3) (* 2) 518
valueliftM3 :: Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m r
#

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

valueliftM4
  1. :: Monad m
  2. => a1 -> a2 -> a3 -> a4 -> r
  3. -> m a1
  4. -> m a2
  5. -> m a3
  6. -> m a4
  7. -> m r
#

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

valueliftM5
  1. :: Monad m
  2. => a1 -> a2 -> a3 -> a4 -> a5 -> r
  3. -> m a1
  4. -> m a2
  5. -> m a3
  6. -> m a4
  7. -> m a5
  8. -> m r
#

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

valueord :: Char -> Int
#

The Prelude.fromEnum method restricted to the type Char.

valueotherwise :: Bool
#

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

 f x | x < 0     = ...
     | otherwise = ...
valuevacuous :: Functor f => f Void -> f a
#

If Void is uninhabited then any Functor that holds only values of type Void is holding no values. It is implemented in terms of fmap absurd.

valuewhen :: Applicative f => Bool -> f () -> f ()
#

Conditional execution of Applicative expressions. For example,

Examples
when debug (putStrLn "Debugging")

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

Example1 expression
putStr "pi:" >> when False (print 3.14159)pi:
valuepopCountDefault :: (Bits a, Num a) => a -> Int
#

Default implementation for popCount.

This implementation is intentionally naive. Instances are expected to provide an optimized implementation for their size.

valuetoIntegralSized :: (Integral a, Integral b, Bits a, Bits b) => a -> Maybe b
#

Attempt to convert an Integral type a to an Integral type b using the size of the types as measured by Bits methods.

A simpler version of this function is:

toIntegral :: (Integral a, Integral b) => a -> Maybe b
toIntegral x
  | toInteger x == toInteger y = Just y
  | otherwise                  = Nothing
  where
    y = fromIntegral x

This version requires going through Integer, which can be inefficient. However, toIntegralSized is optimized to allow GHC to statically determine the relative type sizes (as measured by bitSizeMaybe and isSigned) and avoid going through Integer for many types. (The implementation uses fromIntegral, which is itself optimized with rules for base types but may go through Integer for some type pairs.)

valuechr :: Int -> Char
#

The Prelude.toEnum method restricted to the type Char.

value(&&) :: Bool -> Bool -> Bool
#

Boolean "and", lazy in the second argument

value(||) :: Bool -> Bool -> Bool
#

Boolean "or", lazy in the second argument

valueforkOS :: IO () -> IO ThreadId
#

Like forkIO, this sparks off a new thread to run the IO computation passed as the first argument, and returns the ThreadId of the newly created thread.

However, forkOS creates a bound thread, which is necessary if you need to call foreign (non-Haskell) libraries that make use of thread-local state, such as OpenGL (see Control.Concurrent#boundthreads).

Using forkOS instead of forkIO makes no difference at all to the scheduling behaviour of the Haskell runtime system. It is a common misconception that you need to use forkOS instead of forkIO to avoid blocking all the Haskell threads when making a foreign call; this isn't the case. To allow foreign calls to be made without blocking all the Haskell threads (with GHC), it is only necessary to use the -threaded option when linking your program, and to make sure the foreign import is not marked unsafe.

Returns True if the calling thread is bound, that is, if it is safe to use foreign libraries that rely on thread-local state from the calling thread.

valuerunInBoundThread :: IO a -> IO a
#

Run the IO computation passed as the first argument. If the calling thread is not bound, a bound thread is created temporarily. runInBoundThread doesn't finish until the IO computation finishes.

You can wrap a series of foreign function calls that rely on thread-local state with runInBoundThread so that you can use them without knowing whether the current thread is bound.

valuerunInUnboundThread :: IO a -> IO a
#

Run the IO computation passed as the first argument. If the calling thread is bound, an unbound thread is created temporarily using forkIO. runInBoundThread doesn't finish until the IO computation finishes.

Use this function only in the rare case that you have actually observed a performance loss due to the use of bound threads. A program that doesn't need its main thread to be bound and makes heavy use of concurrency (e.g. a web server), might want to wrap its main action in runInUnboundThread.

Note that exceptions which are thrown to the current thread are thrown in turn to the thread that is executing the given computation. This ensures there's always a way of killing the forked thread.

valuethreadDelay :: Int -> IO ()
#

Suspends the current thread for a given number of microseconds (GHC only).

There is no guarantee that the thread will be rescheduled promptly when the delay has expired, but the thread will never continue to run earlier than specified.

Be careful not to exceed maxBound :: Int, which on 32-bit machines is only 2147483647 μs, less than 36 minutes. Consider using Control.Concurrent.Thread.Delay.delay from unbounded-delays package.

valueatomically :: STM a -> IO a
#

Perform a series of STM actions atomically.

Using atomically inside an unsafePerformIO or unsafeInterleaveIO subverts some of guarantees that STM provides. It makes it possible to run a transaction inside of another transaction, depending on when the thunk is evaluated. If a nested transaction is attempted, an exception is thrown by the runtime. It is possible to safely use atomically inside unsafePerformIO or unsafeInterleaveIO, but the typechecker does not rule out programs that may attempt nested transactions, meaning that the programmer must take special care to prevent these.

However, there are functions for creating transactional variables that can always be safely called in unsafePerformIO. See: newTVarIO, newTChanIO, newBroadcastTChanIO, newTQueueIO, newTBQueueIO, and newTMVarIO.

Using unsafePerformIO inside of atomically is also dangerous but for different reasons. See unsafeIOToSTM for more on this.

valuecatchSTM :: Exception e => STM a -> (e -> STM a) -> STM a
#

Exception handling within STM actions.

catchSTM m f catches any exception thrown by m using throwSTM, using the function f to handle the exception. If an exception is thrown, any changes made by m are rolled back, but changes prior to m persist.

valueforkIO :: IO () -> IO ThreadId
#

Creates a new thread to run the IO computation passed as the first argument, and returns the ThreadId of the newly created thread.

The new thread will be a lightweight, unbound thread. Foreign calls made by this thread are not guaranteed to be made by any particular OS thread; if you need foreign calls to be made by a particular OS thread, then use forkOS instead.

The new thread inherits the masked state of the parent (see GHC.Control.Exception.mask).

The newly created thread has an exception handler that discards the exceptions BlockedIndefinitelyOnMVar, BlockedIndefinitelyOnSTM, and ThreadKilled, and passes all other exceptions to the uncaught exception handler.

WARNING: Exceptions in the new thread will not be rethrown in the thread that created it. This means that you might be completely unaware of the problem if/when this happens. You may want to use the async library instead.

valueforkIOWithUnmask :: ((forall a. IO a -> IO a) -> IO ()) -> IO ThreadId
#

Like forkIO, but the child thread is passed a function that can be used to unmask asynchronous exceptions. This function is typically used in the following way

 ... mask_ $ forkIOWithUnmask $ \unmask ->
                catch (unmask ...) handler

so that the exception handler in the child thread is established with asynchronous exceptions masked, meanwhile the main body of the child thread is executed in the unmasked state.

Note that the unmask function passed to the child thread should only be used in that thread; the behaviour is undefined if it is invoked in a different thread.

valueforkOn :: Int -> IO () -> IO ThreadId
#

Like forkIO, but lets you specify on which capability the thread should run. Unlike a forkIO thread, a thread created by forkOn will stay on the same capability for its entire lifetime (forkIO threads can migrate between capabilities according to the scheduling policy). forkOn is useful for overriding the scheduling policy when you know in advance how best to distribute the threads.

The Int argument specifies a capability number (see getNumCapabilities). Typically capabilities correspond to physical processors, but the exact behaviour is implementation-dependent. The value passed to forkOn is interpreted modulo the total number of capabilities as returned by getNumCapabilities.

GHC note: the number of capabilities is specified by the +RTS -N option when the program is started. Capabilities can be fixed to actual processor cores with +RTS -qa if the underlying operating system supports that, although in practice this is usually unnecessary (and may actually degrade performance in some cases - experimentation is recommended).

Make a weak pointer to a ThreadId. It can be important to do this if you want to hold a reference to a ThreadId while still allowing the thread to receive the BlockedIndefinitely family of exceptions (e.g. BlockedIndefinitelyOnMVar). Holding a normal ThreadId reference will prevent the delivery of BlockedIndefinitely exceptions because the reference could be used as the target of throwTo at any time, which would unblock the thread.

Holding a Weak ThreadId, on the other hand, will not prevent the thread from receiving BlockedIndefinitely exceptions. It is still possible to throw an exception to a Weak ThreadId, but the caller must use deRefWeak first to determine whether the thread still exists.

valueorElse :: STM a -> STM a -> STM a
#

Compose two alternative STM actions (GHC only).

If the first action completes without retrying then it forms the result of the orElse. Otherwise, if the first action retries, then the second action is tried in its place. If both actions retry then the orElse as a whole retries.

valueretry :: STM a
#

Retry execution of the current memory transaction because it has seen values in TVars which mean that it should not continue (e.g. the TVars represent a shared buffer that is now empty). The implementation may block the thread until one of the TVars that it has read from has been updated. (GHC only)

valuesetNumCapabilities :: Int -> IO ()
#

Set the number of Haskell threads that can run truly simultaneously (on separate physical processors) at any given time. The number passed to forkOn is interpreted modulo this value. The initial value is given by the +RTS -N runtime flag.

This is also the number of threads that will participate in parallel garbage collection. It is strongly recommended that the number of capabilities is not set larger than the number of physical processor cores, and it may often be beneficial to leave one or more cores free to avoid contention with other processes in the machine.

valuethreadCapability :: ThreadId -> IO (Int, Bool)
#

Returns the number of the capability on which the thread is currently running, and a boolean indicating whether the thread is locked to that capability or not. A thread is locked to a capability if it was created with forkOn.

valuethrowSTM :: Exception e => e -> STM a
#

A variant of throw that can only be used within the STM monad.

Throwing an exception in STM aborts the transaction and propagates the exception. If the exception is caught via catchSTM, only the changes enclosed by the catch are rolled back; changes made outside of catchSTM persist.

If the exception is not caught inside of the STM, it is re-thrown by atomically, and the entire STM is rolled back.

Although throwSTM has a type that is an instance of the type of throw, the two functions are subtly different:

throw e    `seq` x  ===> throw e
throwSTM e `seq` x  ===> x

The first example will cause the exception e to be raised, whereas the second one won't. In fact, throwSTM will only cause an exception to be raised when it is used within the STM monad. The throwSTM variant should be used in preference to throw to raise an exception within the STM monad because it guarantees ordering with respect to other STM operations, whereas throw does not.

valueyield :: IO ()
#

The yield action allows (forces, in a co-operative multitasking implementation) a context-switch to any other currently runnable threads (if any), and is occasionally useful when implementing concurrency abstractions.

value(<<<) :: Category cat => cat b c -> cat a b -> cat a c
#

Right-to-left composition. This is a synonym for (.), but it can be useful to make the order of composition more apparent.

value(>>>) :: Category cat => cat a b -> cat b c -> cat a c
#

Left-to-right composition. This is useful if you want to write a morphism as a pipeline going from left to right.

valuemodifyMVar :: MVar a -> (a -> IO (a, b)) -> IO b
#

A slight variation on modifyMVar_ that allows a value to be returned (b) in addition to the modified value of the MVar.

valuemodifyMVar_ :: MVar a -> (a -> IO a) -> IO ()
#

An exception-safe wrapper for modifying the contents of an MVar. Like withMVar, modifyMVar will replace the original contents of the MVar if an exception is raised during the operation. This function is only atomic if there are no other producers for this MVar. In other words, it cannot guarantee that, by the time modifyMVar_ gets the chance to write to the MVar, the value of the MVar has not been altered by a write operation from another thread.

valueswapMVar :: MVar a -> a -> IO a
#

Take a value from an MVar, put a new value into the MVar and return the value taken. This function is atomic only if there are no other producers for this MVar. In other words, it cannot guarantee that, by the time swapMVar gets the chance to write to the MVar, the value of the MVar has not been altered by a write operation from another thread.

valuewithMVar :: MVar a -> (a -> IO b) -> IO b
#

withMVar is an exception-safe wrapper for operating on the contents of an MVar. This operation is exception-safe: it will replace the original contents of the MVar if an exception is raised (see Control.Exception). However, it is only atomic if there are no other producers for this MVar. In other words, it cannot guarantee that, by the time withMVar gets the chance to write to the MVar, the value of the MVar has not been altered by a write operation from another thread.

valuewithMVarMasked :: MVar a -> (a -> IO b) -> IO b
#

Like withMVar, but the IO action in the second argument is executed with asynchronous exceptions masked.

valueallowInterrupt :: IO ()
#

When invoked inside mask, this function allows a masked asynchronous exception to be raised, if one exists. It is equivalent to performing an interruptible operation (see #interruptible), but does not involve any actual blocking.

When called outside mask, or inside uninterruptibleMask, this function has no effect.

valuecatches :: IO a -> [Handler a] -> IO a
#

Sometimes you want to catch two different sorts of exception. You could do something like

f = expr `catch` \ (ex :: ArithException) -> handleArith ex
         `catch` \ (ex :: IOException)    -> handleIO    ex

However, there are a couple of problems with this approach. The first is that having two exception handlers is inefficient. However, the more serious issue is that the second exception handler will catch exceptions in the first, e.g. in the example above, if handleArith throws an IOException then the second exception handler will catch it.

Instead, we provide a function catches, which would be used thus:

f = expr `catches` [Handler (\ (ex :: ArithException) -> handleArith ex),
                    Handler (\ (ex :: IOException)    -> handleIO    ex)]
valuebracket
  1. :: IO a

    computation to run first ("acquire resource")

  2. -> (a -> IO b)

    computation to run last ("release resource")

  3. -> (a -> IO c)

    computation to run in-between

  4. -> IO c
#

When you want to acquire a resource, do some work with it, and then release the resource, it is a good idea to use bracket, because bracket will install the necessary exception handler to release the resource in the event that an exception is raised during the computation. If an exception is raised, then bracket will re-raise the exception (after performing the release).

A common example is opening a file:

bracket
  (openFile "filename" ReadMode)
  (hClose)
  (\fileHandle -> do { ... })

The arguments to bracket are in this order so that we can partially apply it, e.g.:

withFile name mode = bracket (openFile name mode) hClose

Bracket wraps the release action with mask, which is sufficient to ensure that the release action executes to completion when it does not invoke any interruptible actions, even in the presence of asynchronous exceptions. For example, hClose is uninterruptible when it is not racing other uses of the handle. Similarly, closing a socket (from "network" package) is also uninterruptible under similar conditions. An example of an interruptible action is killThread. Completion of interruptible release actions can be ensured by wrapping them in uninterruptibleMask_, but this risks making the program non-responsive to Control-C, or timeouts. Another option is to run the release action asynchronously in its own thread:

void $ uninterruptibleMask_ $ forkIO $ do { ... }

The resource will be released as soon as possible, but the thread that invoked bracket will not block in an uninterruptible state.

valuebracketOnError
  1. :: IO a

    computation to run first ("acquire resource")

  2. -> (a -> IO b)

    computation to run last ("release resource")

  3. -> (a -> IO c)

    computation to run in-between

  4. -> IO c
#

Like bracket, but only performs the final action if there was an exception raised by the in-between computation.

valuebracket_ :: IO a -> IO b -> IO c -> IO c
#

A variant of bracket where the return value from the first computation is not required.

valuecatchJust
  1. :: Exception e
  2. => (e -> Maybe b)

    Predicate to select exceptions

  3. -> IO a

    Computation to run

  4. -> (b -> IO a)

    Handler

  5. -> IO a
#

The function catchJust is like catch, but it takes an extra argument which is an exception predicate, a function which selects which type of exceptions we're interested in.

catchJust (\e -> if isDoesNotExistErrorType (ioeGetErrorType e) then Just () else Nothing)
          (readFile f)
          (\_ -> do hPutStrLn stderr ("No such file: " ++ show f)
                    return "")

Any other exceptions which are not matched by the predicate are re-raised, and may be caught by an enclosing catch, catchJust, etc.

valuefinally
  1. :: IO a

    computation to run first

  2. -> IO b

    computation to run afterward (even if an exception was raised)

  3. -> IO a
#

A specialised variant of bracket with just a computation to run afterward.

valuehandle :: Exception e => (e -> IO a) -> IO a -> IO a
#

A version of catch with the arguments swapped around; useful in situations where the code for the handler is shorter. For example:

  do handle (\NonTermination -> exitWith (ExitFailure 1)) $
     ...
valuemapException :: (Exception e1, Exception e2) => (e1 -> e2) -> a -> a
#

This function maps one exception into another as proposed in the paper "A semantics for imprecise exceptions".

valueonException :: IO a -> IO b -> IO a
#

Like finally, but only performs the final action if there was an exception raised by the computation.

valuetry :: Exception e => IO a -> IO (Either e a)
#

Similar to catch, but returns an Either result which is (Right a) if no exception of type e was raised, or (Left ex) if an exception of type e was raised and its value is ex. If any other type of exception is raised then it will be propagated up to the next enclosing exception handler.

 try a = catch (Right `liftM` a) (return . Left)
valuetryJust :: Exception e => (e -> Maybe b) -> IO a -> IO (Either b a)
#

A variant of try that takes an exception predicate to select which exceptions are caught (c.f. catchJust). If the exception does not match the predicate, it is re-thrown.

value(<$!>) :: Monad m => (a -> b) -> m a -> m b
#

Strict version of <$>.

value(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
#

Right-to-left composition of Kleisli arrows. (>=>), with the arguments flipped.

Note how this operator resembles function composition (.):

(.)   ::            (b ->   c) -> (a ->   b) -> a ->   c
(<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c
value(>=>) :: Monad m => (a -> m b) -> (b -> m c) -> a -> m c
#

Left-to-right composition of Kleisli arrows.

'(bs >=> cs) a' can be understood as the do expression

do b <- bs a
   cs b

or in terms of (>>=) as

bs a >>= cs
valuefilterM :: Applicative m => (a -> m Bool) -> [a] -> m [a]
#

This generalizes the list-based Data.List.filter function.

runIdentity (filterM (Identity . p) xs) == filter p xs
Examples
Example1 expression
filterM (\x -> do      putStrLn ("Keep: " ++ show x ++ "?")      answer <- getLine      pure (answer == "y"))    [1, 2, 3]Keep: 1?yKeep: 2?nKeep: 3?y[1,3]
Example1 expression
filterM (\x -> do      putStr (show x)      x' <- readLn      pure (x == x'))    [1, 2, 3]122233[2,3]
valuefoldM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
#

The foldM function is analogous to foldl, except that its result is encapsulated in a monad. Note that foldM works from left-to-right over the list arguments. This could be an issue where (>>) and the `folded function' are not commutative.

foldM f a1 [x1, x2, ..., xm]

==

do
  a2 <- f a1 x1
  a3 <- f a2 x2
  ...
  f am xm

If right-to-left evaluation is required, the input list should be reversed.

Note: foldM is the same as foldlM

valueforever :: Applicative f => f a -> f b
#

Repeat an action indefinitely.

Examples

A common use of forever is to process input from network sockets, System.IO.Handles, and channels (e.g. MVar and Chan).

For example, here is how we might implement an echo server, using forever both to listen for client connections on a network socket and to echo client input on client connection handles:

echoServer :: Socket -> IO ()
echoServer socket = forever $ do
  client <- accept socket
  forkFinally (echo client) (\_ -> hClose client)
  where
    echo :: Handle -> IO ()
    echo client = forever $
      hGetLine client >>= hPutStrLn client

Note that "forever" isn't necessarily non-terminating. If the action is in a MonadPlus and short-circuits after some number of iterations. then forever actually returns mzero, effectively short-circuiting its caller.

valueguard :: Alternative f => Bool -> f ()
#

Conditional failure of Alternative computations. Defined by

guard True  = pure ()
guard False = empty
Examples

Common uses of guard include conditionally signalling an error in an error monad and conditionally rejecting the current choice in an Alternative-based parser.

As an example of signalling an error in the error monad Maybe, consider a safe division function safeDiv x y that returns Nothing when the denominator y is zero and Just (x `div` y) otherwise. For example:

Example1 expression
safeDiv 4 0Nothing
Example1 expression
safeDiv 4 2Just 2

A definition of safeDiv using guards, but not guard:

safeDiv :: Int -> Int -> Maybe Int
safeDiv x y | y /= 0    = Just (x `div` y)
            | otherwise = Nothing

A definition of safeDiv using guard and Monad do-notation:

safeDiv :: Int -> Int -> Maybe Int
safeDiv x y = do
  guard (y /= 0)
  return (x `div` y)
valuemapAndUnzipM :: Applicative m => (a -> m (b, c)) -> [a] -> m ([b], [c])
#

The mapAndUnzipM function maps its first argument over a list, returning the result as a pair of lists. This function is mainly used with complicated data structures or a state monad.

valuemfilter :: MonadPlus m => (a -> Bool) -> m a -> m a
#

Direct MonadPlus equivalent of Data.List.filter.

Examples

The Data.List.filter function is just mfilter specialized to the list monad:

Data.List.filter = ( mfilter :: (a -> Bool) -> [a] -> [a] )

An example using mfilter with the Maybe monad:

Example2 expressions
mfilter odd (Just 1)Just 1mfilter odd (Just 2)Nothing
valuereplicateM :: Applicative m => Int -> m a -> m [a]
#

replicateM n act performs the action act n times, and then returns the list of results.

replicateM n (pure x) == replicate n x
Examples
Example1 expression
replicateM 3 getLinehiheyahiya["hi","heya","hiya"]
Example2 expressions
import Control.Monad.StaterunState (replicateM 3 $ state $ \s -> (s, s + 1)) 1([1,2,3],4)
valueunless :: Applicative f => Bool -> f () -> f ()
#

The reverse of when.

Examples
Example1 expression
do x <- getLine       unless (x == "hi") (putStrLn "hi!")comingupwithexamplesisdifficulthi!
Example1 expression
unless (pi > exp 1) NothingJust ()
value(.^.) :: Bits a => a -> a -> a
#

Infix version of xor.

valueoneBits :: FiniteBits a => a
#

A more concise version of complement zeroBits.

Example1 expression
complement (zeroBits :: Word) == (oneBits :: Word)True
Example1 expression
complement (oneBits :: Word) == (zeroBits :: Word)True

Note

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

valueeither :: (a -> c) -> (b -> c) -> Either a b -> c
#

Case analysis for the Either type. If the value is Left a, apply the first function to a; if it is Right b, apply the second function to b.

Examples

We create two values of type Either String Int, one using the Left constructor and another using the Right constructor. Then we apply "either" the Prelude.length function (if we have a String) or the "times-two" function (if we have an Int):

Example4 expressions
let s = Left "foo" :: Either String Intlet n = Right 3 :: Either String Inteither length (*2) s3either length (*2) n6
valuefromLeft :: a -> Either a b -> a
#

Return the contents of a Left-value or a default value otherwise.

Examples

Basic usage:

Example2 expressions
fromLeft 1 (Left 3)3fromLeft 1 (Right "foo")1
valuefromRight :: b -> Either a b -> b
#

Return the contents of a Right-value or a default value otherwise.

Examples

Basic usage:

Example2 expressions
fromRight 1 (Right 3)3fromRight 1 (Left "foo")1
valueisLeft :: Either a b -> Bool
#

Return True if the given value is a Left-value, False otherwise.

Examples

Basic usage:

Example2 expressions
isLeft (Left "foo")TrueisLeft (Right 3)False

Assuming a Left value signifies some sort of error, we can use isLeft to write a very simple error-reporting function that does absolutely nothing in the case of success, and outputs "ERROR" if any error occurred.

This example shows how isLeft might be used to avoid pattern matching when one does not care about the value contained in the constructor:

Example4 expressions
import Control.Monad ( when )let report e = when (isLeft e) $ putStrLn "ERROR"report (Right 1)report (Left "parse error")ERROR
valueisRight :: Either a b -> Bool
#

Return True if the given value is a Right-value, False otherwise.

Examples

Basic usage:

Example2 expressions
isRight (Left "foo")FalseisRight (Right 3)True

Assuming a Left value signifies some sort of error, we can use isRight to write a very simple reporting function that only outputs "SUCCESS" when a computation has succeeded.

This example shows how isRight might be used to avoid pattern matching when one does not care about the value contained in the constructor:

Example4 expressions
import Control.Monad ( when )let report e = when (isRight e) $ putStrLn "SUCCESS"report (Left "parse error")report (Right 1)SUCCESS
valuelefts :: [Either a b] -> [a]
#

Extracts from a list of Either all the Left elements. All the Left elements are extracted in order.

Examples

Basic usage:

Example2 expressions
let list = [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]lefts list["foo","bar","baz"]
valuepartitionEithers :: [Either a b] -> ([a], [b])
#

Partitions a list of Either into two lists. All the Left elements are extracted, in order, to the first component of the output. Similarly the Right elements are extracted to the second component of the output.

Examples

Basic usage:

Example2 expressions
let list = [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]partitionEithers list(["foo","bar","baz"],[3,7])

The pair returned by partitionEithers x should be the same pair as (lefts x, rights x):

Example2 expressions
let list = [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]partitionEithers list == (lefts list, rights list)True
valuerights :: [Either a b] -> [b]
#

Extracts from a list of Either all the Right elements. All the Right elements are extracted in order.

Examples

Basic usage:

Example2 expressions
let list = [ Left "foo", Right 3, Left "bar", Right 7, Left "baz" ]rights list[3,7]
valueall :: Foldable t => (a -> Bool) -> t a -> Bool
#

Determines whether all elements of the structure satisfy the predicate.

Examples

Basic usage:

Example1 expression
all (> 3) []True
Example1 expression
all (> 3) [1,2]False
Example1 expression
all (> 3) [1,2,3,4,5]False
Example1 expression
all (> 3) [1..]False
Example1 expression
all (> 3) [4..]* Hangs forever *
valueand :: Foldable t => t Bool -> Bool
#

and returns the conjunction of a container of Bools. For the result to be True, the container must be finite; False, however, results from a False value finitely far from the left end.

Examples

Basic usage:

Example1 expression
and []True
Example1 expression
and [True]True
Example1 expression
and [False]False
Example1 expression
and [True, True, False]False
Example1 expression
and (False : repeat True) -- Infinite list [False,True,True,True,...False
Example1 expression
and (repeat True)* Hangs forever *
valueany :: Foldable t => (a -> Bool) -> t a -> Bool
#

Determines whether any element of the structure satisfies the predicate.

Examples

Basic usage:

Example1 expression
any (> 3) []False
Example1 expression
any (> 3) [1,2]False
Example1 expression
any (> 3) [1,2,3,4,5]True
Example1 expression
any (> 3) [1..]True
Example1 expression
any (> 3) [0, -1..]* Hangs forever *
valueasum :: (Foldable t, Alternative f) => t (f a) -> f a
#

The sum of a collection of actions using (<|>), generalizing concat.

asum is just like msum, but generalised to Alternative.

Examples

Basic usage:

Example1 expression
asum [Just "Hello", Nothing, Just "World"]Just "Hello"
valueconcat :: Foldable t => t [a] -> [a]
#

The concatenation of all the elements of a container of lists.

Examples

Basic usage:

Example1 expression
concat (Just [1, 2, 3])[1,2,3]
Example1 expression
concat (Left 42)[]
Example1 expression
concat [[1, 2, 3], [4, 5], [6], []][1,2,3,4,5,6]
valueconcatMap :: Foldable t => (a -> [b]) -> t a -> [b]
#

Map a function over all the elements of a container and concatenate the resulting lists.

Examples

Basic usage:

Example1 expression
concatMap (take 3) [[1..], [10..], [100..], [1000..]][1,2,3,10,11,12,100,101,102,1000,1001,1002]
Example1 expression
concatMap (take 3) (Just [1..])[1,2,3]
valuefind :: Foldable t => (a -> Bool) -> t a -> Maybe a
#

The find function takes a predicate and a structure and returns the leftmost element of the structure matching the predicate, or Nothing if there is no such element.

Examples

Basic usage:

Example1 expression
find (> 42) [0, 5..]Just 45
Example1 expression
find (> 12) [1..7]Nothing
valuefoldlM :: (Foldable t, Monad m) => (b -> a -> m b) -> b -> t a -> m b
#

Left-to-right monadic fold over the elements of a structure.

Given a structure t with elements (a, b, ..., w, x, y), the result of a fold with an operator function f is equivalent to:

foldlM f z t = do
    aa <- f z a
    bb <- f aa b
    ...
    xx <- f ww x
    yy <- f xx y
    return yy -- Just @return z@ when the structure is empty

For a Monad m, given two functions f1 :: a -> m b and f2 :: b -> m c, their Kleisli composition (f1 >=> f2) :: a -> m c is defined by:

(f1 >=> f2) a = f1 a >>= f2

Another way of thinking about foldlM is that it amounts to an application to z of a Kleisli composition:

foldlM f z t =
    flip f a >=> flip f b >=> ... >=> flip f x >=> flip f y $ z

The monadic effects of foldlM are sequenced from left to right.

If at some step the bind operator (>>=) short-circuits (as with, e.g., mzero in a MonadPlus), the evaluated effects will be from an initial segment of the element sequence. If you want to evaluate the monadic effects in right-to-left order, or perhaps be able to short-circuit after processing a tail of the sequence of elements, you'll need to use foldrM instead.

If the monadic effects don't short-circuit, the outermost application of f is to the rightmost element y, so that, ignoring effects, the result looks like a left fold:

((((z `f` a) `f` b) ... `f` w) `f` x) `f` y
Examples

Basic usage:

Example2 expressions
let f a e = do { print e ; return $ e : a }foldlM f [] [0..3]0123[3,2,1,0]
valuefoldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m b
#

Right-to-left monadic fold over the elements of a structure.

Given a structure t with elements (a, b, c, ..., x, y), the result of a fold with an operator function f is equivalent to:

foldrM f z t = do
    yy <- f y z
    xx <- f x yy
    ...
    bb <- f b cc
    aa <- f a bb
    return aa -- Just @return z@ when the structure is empty

For a Monad m, given two functions f1 :: a -> m b and f2 :: b -> m c, their Kleisli composition (f1 >=> f2) :: a -> m c is defined by:

(f1 >=> f2) a = f1 a >>= f2

Another way of thinking about foldrM is that it amounts to an application to z of a Kleisli composition:

foldrM f z t = f y >=> f x >=> ... >=> f b >=> f a $ z

The monadic effects of foldrM are sequenced from right to left, and e.g. folds of infinite lists will diverge.

If at some step the bind operator (>>=) short-circuits (as with, e.g., mzero in a MonadPlus), the evaluated effects will be from a tail of the element sequence. If you want to evaluate the monadic effects in left-to-right order, or perhaps be able to short-circuit after an initial sequence of elements, you'll need to use foldlM instead.

If the monadic effects don't short-circuit, the outermost application of f is to the leftmost element a, so that, ignoring effects, the result looks like a right fold:

a `f` (b `f` (c `f` (... (x `f` (y `f` z))))).
Examples

Basic usage:

Example2 expressions
let f i acc = do { print i ; return $ i : acc }foldrM f [] [0..3]3210[0,1,2,3]
valueforM_ :: (Foldable t, Monad m) => t a -> (a -> m b) -> m ()
#

forM_ is mapM_ with its arguments flipped. For a version that doesn't ignore the results see Data.Traversable.forM.

forM_ is just like for_, but specialised to monadic actions.

valuemapM_ :: (Foldable t, Monad m) => (a -> m b) -> t a -> m ()
#

Map each element of a structure to a monadic action, evaluate these actions from left to right, and ignore the results. For a version that doesn't ignore the results see Data.Traversable.mapM.

mapM_ is just like traverse_, but specialised to monadic actions.

valuemaximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
#

The largest element of a non-empty structure with respect to the given comparison function. Structure order is used as a tie-breaker: if there are multiple largest elements, the rightmost of them is chosen.

Examples

Basic usage:

Example1 expression
maximumBy (compare `on` length) ["Hello", "World", "!", "Longest", "bar"]"Longest"

WARNING: This function is partial for possibly-empty structures like lists.

valueminimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a
#

The least element of a non-empty structure with respect to the given comparison function. Structure order is used as a tie-breaker: if there are multiple least elements, the leftmost of them is chosen.

Examples

Basic usage:

Example1 expression
minimumBy (compare `on` length) ["Hello", "World", "!", "Longest", "bar"]"!"

WARNING: This function is partial for possibly-empty structures like lists.

valuemsum :: (Foldable t, MonadPlus m) => t (m a) -> m a
#

The sum of a collection of actions using (<|>), generalizing concat.

msum is just like asum, but specialised to MonadPlus.

Examples

Basic usage, using the MonadPlus instance for Maybe:

Example1 expression
msum [Just "Hello", Nothing, Just "World"]Just "Hello"
valuenotElem :: (Foldable t, Eq a) => a -> t a -> Bool
#

notElem is the negation of elem.

Examples

Basic usage:

Example1 expression
3 `notElem` []True
Example1 expression
3 `notElem` [1,2]True
Example1 expression
3 `notElem` [1,2,3,4,5]False

For infinite structures, notElem terminates if the value exists at a finite distance from the left side of the structure:

Example1 expression
3 `notElem` [1..]False
Example1 expression
3 `notElem` ([4..] ++ [3])* Hangs forever *
valueor :: Foldable t => t Bool -> Bool
#

or returns the disjunction of a container of Bools. For the result to be False, the container must be finite; True, however, results from a True value finitely far from the left end.

Examples

Basic usage:

Example1 expression
or []False
Example1 expression
or [True]True
Example1 expression
or [False]False
Example1 expression
or [True, True, False]True
Example1 expression
or (True : repeat False) -- Infinite list [True,False,False,False,...True
Example1 expression
or (repeat False)* Hangs forever *
valuesequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()
#

Evaluate each action in the structure from left to right, and ignore the results. For a version that doesn't ignore the results see sequenceA.

sequenceA_ is just like sequence_, but generalised to Applicative actions.

Examples

Basic usage:

Example1 expression
sequenceA_ [print "Hello", print "world", print "!"]"Hello""world""!"
valuesequence_ :: (Foldable t, Monad m) => t (m a) -> m ()
#

Evaluate each monadic action in the structure from left to right, and ignore the results. For a version that doesn't ignore the results see Data.Traversable.sequence.

sequence_ is just like sequenceA_, but specialised to monadic actions.

valuetraverse_ :: (Foldable t, Applicative f) => (a -> f b) -> t a -> f ()
#

Map each element of a structure to an Applicative action, evaluate these actions from left to right, and ignore the results. For a version that doesn't ignore the results see traverse.

traverse_ is just like mapM_, but generalised to Applicative actions.

Examples

Basic usage:

Example1 expression
traverse_ print ["Hello", "world", "!"]"Hello""world""!"
value(&) :: a -> (a -> b) -> b
#

& is a reverse application operator. This provides notational convenience. Its precedence is one higher than that of the forward application operator $, which allows & to be nested in $.

This is a version of flip id, where id is specialized from a -> a to (a -> b) -> (a -> b) which by the associativity of (->) is (a -> b) -> a -> b. flipping this yields a -> (a -> b) -> b which is the type signature of &

Examples
Example1 expression
5 & (+1) & show"6"
Example1 expression
sqrt $ [1 / n^2 | n <- [1..1000]] & sum & (*6)3.1406380562059946
valueon :: (b -> b -> c) -> (a -> b) -> a -> a -> c
#

on b u x y runs the binary function b on the results of applying unary function u to two arguments x and y. From the opposite perspective, it transforms two inputs and combines the outputs.

(op `on` f) x y = f x `op` f y
Examples
Example1 expression
sortBy (compare `on` length) [[0, 1, 2], [0, 1], [], [0]][[],[0],[0,1],[0,1,2]]
Example1 expression
((+) `on` length) [1, 2, 3] [-1]4
Example1 expression
((,) `on` (*2)) 2 3(4,6)
Algebraic properties
  • (*) `on` id = (*) -- (if (*) ∉ {⊥, const ⊥})
  • ((*) `on` f) `on` g = (*) `on` (f . g)
  • flip on f . flip on g = flip on (g . f)
value($>) :: Functor f => f a -> b -> f b
#

Flipped version of <$.

Examples

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

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

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

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

Replace each element of a list with a constant String:

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

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

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

An infix synonym for fmap.

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

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

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

Examples

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

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

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

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

Double each element of a list:

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

Apply even to the second element of a pair:

Example1 expression
even <$> (2,2)(2,True)
value(<&>) :: Functor f => f a -> (a -> b) -> f b
#

Flipped version of <$>.

(<&>) = flip fmap
Examples

Apply (+1) to a list, a Just and a Right:

Example1 expression
Just 2 <&> (+1)Just 3
Example1 expression
[1,2,3] <&> (+1)[2,3,4]
Example1 expression
Right 3 <&> (+1)Right 4
valuevoid :: Functor f => f a -> f ()
#

void value discards or ignores the result of evaluation, such as the return value of an System.IO.IO action.

Examples

Replace the contents of a Maybe Int with unit:

Example1 expression
void NothingNothing
Example1 expression
void (Just 3)Just ()

Replace the contents of an Either Int Int with unit, resulting in an Either Int ():

Example1 expression
void (Left 8675309)Left 8675309
Example1 expression
void (Right 8675309)Right ()

Replace every element of a list with unit:

Example1 expression
void [1,2,3][(),(),()]

Replace the second element of a pair with unit:

Example1 expression
void (1,2)(1,())

Discard the result of an System.IO.IO action:

Example1 expression
mapM print [1,2]12[(),()]
Example1 expression
void $ mapM print [1,2]12
valuecatMaybes :: [Maybe a] -> [a]
#

The catMaybes function takes a list of Maybes and returns a list of all the Just values.

Examples

Basic usage:

Example1 expression
catMaybes [Just 1, Nothing, Just 3][1,3]

When constructing a list of Maybe values, catMaybes can be used to return all of the "success" results (if the list is the result of a map, then mapMaybe would be more appropriate):

Example3 expressions
import GHC.Internal.Text.Read ( readMaybe )[readMaybe x :: Maybe Int | x <- ["1", "Foo", "3"] ][Just 1,Nothing,Just 3]catMaybes $ [readMaybe x :: Maybe Int | x <- ["1", "Foo", "3"] ][1,3]
valuefromMaybe :: a -> Maybe a -> a
#

The fromMaybe function takes a default value and a Maybe value. If the Maybe is Nothing, it returns the default value; otherwise, it returns the value contained in the Maybe.

Examples

Basic usage:

Example1 expression
fromMaybe "" (Just "Hello, World!")"Hello, World!"
Example1 expression
fromMaybe "" Nothing""

Read an integer from a string using readMaybe. If we fail to parse an integer, we want to return 0 by default:

Example3 expressions
import GHC.Internal.Text.Read ( readMaybe )fromMaybe 0 (readMaybe "5")5fromMaybe 0 (readMaybe "")0
valueisJust :: Maybe a -> Bool
#

isJust x returns True when x is of the form Just _ and False otherwise.

Examples

Basic usage:

Example1 expression
isJust (Just 3)True
Example1 expression
isJust (Just ())True
Example1 expression
isJust NothingFalse

Only the outer constructor is taken into consideration:

Example1 expression
isJust (Just Nothing)True
valueisNothing :: Maybe a -> Bool
#

isNothing x returns True when x is Nothing and False otherwise.

Examples

Basic usage:

Example1 expression
isNothing (Just 3)False
Example1 expression
isNothing (Just ())False
Example1 expression
isNothing NothingTrue

Only the outer constructor is taken into consideration:

Example1 expression
isNothing (Just Nothing)False
valuelistToMaybe :: [a] -> Maybe a
#

The listToMaybe function returns Nothing on an empty list or Just a where a is the first element of the list.

Examples

Basic usage:

Example1 expression
listToMaybe []Nothing
Example1 expression
listToMaybe [9]Just 9
Example1 expression
listToMaybe [1,2,3]Just 1

Composing maybeToList with listToMaybe should be the identity on singleton/empty lists:

Example2 expressions
maybeToList $ listToMaybe [5][5]maybeToList $ listToMaybe [][]

But not on lists with more than one element:

Example1 expression
maybeToList $ listToMaybe [1,2,3][1]
valuemapMaybe :: (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 Maybe b. If this is Nothing, no element is added on to the result list. If it is Just b, then b is included in the result list.

Examples

Using mapMaybe f x is a shortcut for catMaybes $ map f x in most cases:

Example4 expressions
import GHC.Internal.Text.Read ( readMaybe )let readMaybeInt = readMaybe :: String -> Maybe IntmapMaybe 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:

Example1 expression
mapMaybe Just [1,2,3][1,2,3]
valuemaybe :: 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:

Example1 expression
maybe False odd (Just 3)True
Example1 expression
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:

Example3 expressions
import GHC.Internal.Text.Read ( readMaybe )maybe 0 (*2) (readMaybe "5")10maybe 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":

Example2 expressions
maybe "" show (Just 5)"5"maybe "" show Nothing""
valuemaybeToList :: Maybe a -> [a]
#

The maybeToList function returns an empty list when given Nothing or a singleton list when given Just.

Examples

Basic usage:

Example1 expression
maybeToList (Just 7)[7]
Example1 expression
maybeToList Nothing[]

One can use maybeToList to avoid pattern matching when combined with a function that (safely) works on lists:

Example3 expressions
import GHC.Internal.Text.Read ( readMaybe )sum $ maybeToList (readMaybe "3")3sum $ maybeToList (readMaybe "")0
valuegenericLength :: Num i => [a] -> i
#

\mathcal{O}(n). The genericLength function is an overloaded version of length. In particular, instead of returning an Int, it returns any type which is an instance of Num. It is, however, less efficient than length.

Examples
Example2 expressions
genericLength [1, 2, 3] :: Int3genericLength [1, 2, 3] :: Float3.0

Users should take care to pick a return type that is wide enough to contain the full length of the list. If the width is insufficient, the overflow behaviour will depend on the (+) implementation in the selected Num instance. The following example overflows because the actual list length of 200 lies outside of the Int8 range of -128..127.

Example1 expression
genericLength [1..200] :: Int8-56
valuegroup :: Eq a => [a] -> [[a]]
#

The group function takes a list and returns a list of lists such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result is non-empty, all elements are equal to the first one, and consecutive equal elements of the input end up in the same element of the output list.

group is a special case of groupBy, which allows the programmer to supply their own equality test.

It's often preferable to use Data.List.NonEmpty.group, which provides type-level guarantees of non-emptiness of inner lists. A common idiom to squash repeating elements map head . group is better served by map Data.List.NonEmpty.head . Data.List.NonEmpty.group because it avoids partial functions.

Examples
Example1 expression
group "Mississippi"["M","i","ss","i","ss","i","pp","i"]
Example1 expression
group [1, 1, 1, 2, 2, 3, 4, 5, 5][[1,1,1],[2,2],[3],[4],[5,5]]
valuegroupBy :: (a -> a -> Bool) -> [a] -> [[a]]
#

The groupBy function is the non-overloaded version of group.

When a supplied relation is not transitive, it is important to remember that equality is checked against the first element in the group, not against the nearest neighbour:

Example1 expression
groupBy (\a b -> b - a < 5) [0..19][[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14],[15,16,17,18,19]]

It's often preferable to use Data.List.NonEmpty.groupBy, which provides type-level guarantees of non-emptiness of inner lists.

Examples
Example1 expression
groupBy (/=) [1, 1, 1, 2, 3, 1, 4, 4, 5][[1],[1],[1,2,3],[1,4,4,5]]
Example1 expression
groupBy (>) [1, 3, 5, 1, 4, 2, 6, 5, 4][[1],[3],[5,1,4,2],[6,5,4]]
Example1 expression
groupBy (const not) [True, False, True, False, False, False, True][[True,False],[True,False,False,False],[True]]
valueinits :: [a] -> [[a]]
#

The inits function returns all initial segments of the argument, shortest first.

inits is semantically equivalent to map reverse . scanl (flip (:)) [], but under the hood uses a queue to amortize costs of reverse.

Laziness

Note that inits has the following strictness property: inits (xs ++ _|_) = inits xs ++ _|_

In particular, inits _|_ = [] : _|_

Examples
Example1 expression
inits "abc"["","a","ab","abc"]
Example1 expression
inits [][[]]

inits is productive on infinite lists:

Example1 expression
take 5 $ inits [1..][[],[1],[1,2],[1,2,3],[1,2,3,4]]
valueintercalate :: [a] -> [[a]] -> [a]
#

intercalate xs xss is equivalent to (concat (intersperse xs xss)). It inserts the list xs in between the lists in xss and concatenates the result.

Laziness

intercalate has the following properties:

Example1 expression
take 5 (intercalate undefined ("Lorem" : undefined))"Lorem"
Example1 expression
take 6 (intercalate ", " ("Lorem" : undefined))"Lorem*** Exception: Prelude.undefined
Examples
Example1 expression
intercalate ", " ["Lorem", "ipsum", "dolor"]"Lorem, ipsum, dolor"
Example1 expression
intercalate [0, 1] [[2, 3], [4, 5, 6], []][2,3,0,1,4,5,6,0,1]
Example1 expression
intercalate [1, 2, 3] [[], []][1,2,3]
valueintersperse :: a -> [a] -> [a]
#

\mathcal{O}(n). The intersperse function takes an element and a list and `intersperses' that element between the elements of the list.

Laziness

intersperse has the following properties

Example1 expression
take 1 (intersperse undefined ('a' : undefined))"a"
Example1 expression
take 2 (intersperse ',' ('a' : undefined))"a*** Exception: Prelude.undefined
Examples
Example1 expression
intersperse ',' "abcde""a,b,c,d,e"
Example1 expression
intersperse 1 [3, 4, 5][3,1,4,1,5]
valueisInfixOf :: Eq a => [a] -> [a] -> Bool
#

The isInfixOf function takes two lists and returns True iff the first list is contained, wholly and intact, anywhere within the second.

Examples
Example1 expression
isInfixOf "Haskell" "I really like Haskell."True
Example1 expression
isInfixOf "Ial" "I really like Haskell."False

For the result to be True, the first list must be finite; for the result to be False, the second list must be finite:

Example1 expression
[20..50] `isInfixOf` [0..]True
Example1 expression
[0..] `isInfixOf` [20..50]False
Example1 expression
[0..] `isInfixOf` [0..]* Hangs forever *
valueisPrefixOf :: Eq a => [a] -> [a] -> Bool
#

\mathcal{O}(\min(m,n)). The isPrefixOf function takes two lists and returns True iff the first list is a prefix of the second.

Examples
Example1 expression
"Hello" `isPrefixOf` "Hello World!"True
Example1 expression
"Hello" `isPrefixOf` "Wello Horld!"False

For the result to be True, the first list must be finite; False, however, results from any mismatch:

Example1 expression
[0..] `isPrefixOf` [1..]False
Example1 expression
[0..] `isPrefixOf` [0..99]False
Example1 expression
[0..99] `isPrefixOf` [0..]True
Example1 expression
[0..] `isPrefixOf` [0..]* Hangs forever *

isPrefixOf shortcuts when the first argument is empty:

Example1 expression
isPrefixOf [] undefinedTrue
valueisSuffixOf :: Eq a => [a] -> [a] -> Bool
#

The isSuffixOf function takes two lists and returns True iff the first list is a suffix of the second.

Examples
Example1 expression
"ld!" `isSuffixOf` "Hello World!"True
Example1 expression
"World" `isSuffixOf` "Hello World!"False

The second list must be finite; however the first list may be infinite:

Example1 expression
[0..] `isSuffixOf` [0..99]False
Example1 expression
[0..99] `isSuffixOf` [0..]* Hangs forever *
valuepermutations :: [a] -> [[a]]
#

The permutations function returns the list of all permutations of the argument.

Note that the order of permutations is not lexicographic. It satisfies the following property:

map (take n) (take (product [1..n]) (permutations ([1..n] ++ undefined))) == permutations [1..n]
Laziness

The permutations function is maximally lazy: for each n, the value of permutations xs starts with those permutations that permute take n xs and keep drop n xs.

Examples
Example1 expression
permutations "abc"["abc","bac","cba","bca","cab","acb"]
Example1 expression
permutations [1, 2][[1,2],[2,1]]
Example1 expression
permutations [][[]]

This function is productive on infinite inputs:

Example1 expression
take 6 $ map (take 3) $ permutations ['a'..]["abc","bac","cba","bca","cab","acb"]
valuesort :: Ord a => [a] -> [a]
#

The sort function implements a stable sorting algorithm. It is a special case of sortBy, which allows the programmer to supply their own comparison function.

Elements are arranged from lowest to highest, keeping duplicates in the order they appeared in the input.

The argument must be finite.

Examples
Example1 expression
sort [1,6,4,3,2,5][1,2,3,4,5,6]
Example1 expression
sort "haskell""aehklls"
Example2 expressions
import Data.Semigroup(Arg(..))sort [Arg ":)" 0, Arg ":D" 0, Arg ":)" 1, Arg ":3" 0, Arg ":D" 1][Arg ":)" 0,Arg ":)" 1,Arg ":3" 0,Arg ":D" 0,Arg ":D" 1]
valuesortBy :: (a -> a -> Ordering) -> [a] -> [a]
#

The sortBy function is the non-overloaded version of sort. The argument must be finite.

The supplied comparison relation is supposed to be reflexive and antisymmetric, otherwise, e. g., for _ _ -> GT, the ordered list simply does not exist. The relation is also expected to be transitive: if it is not then sortBy might fail to find an ordered permutation, even if it exists.

Examples
Example1 expression
sortBy (\(a,_) (b,_) -> compare a b) [(2, "world"), (4, "!"), (1, "Hello")][(1,"Hello"),(2,"world"),(4,"!")]
valuesubsequences :: [a] -> [[a]]
#

The subsequences function returns the list of all subsequences of the argument.

Laziness

subsequences does not look ahead unless it must:

Example2 expressions
take 1 (subsequences undefined)[[]]take 2 (subsequences ('a' : undefined))["","a"]
Examples
Example1 expression
subsequences "abc"["","a","b","ab","c","ac","bc","abc"]

This function is productive on infinite inputs:

Example1 expression
take 8 $ subsequences ['a'..]["","a","b","ab","c","ac","bc","abc"]
valuetails :: [a] -> [[a]]
#

\mathcal{O}(n). The tails function returns all final segments of the argument, longest first.

Laziness

Note that tails has the following strictness property: tails _|_ = _|_ : _|_

Example1 expression
tails undefined[*** Exception: Prelude.undefined
Example1 expression
drop 1 (tails [undefined, 1, 2])[[1, 2], [2], []]
Examples
Example1 expression
tails "abc"["abc","bc","c",""]
Example1 expression
tails [1, 2, 3][[1,2,3],[2,3],[3],[]]
Example1 expression
tails [][[]]
valuetranspose :: [[a]] -> [[a]]
#

The transpose function transposes the rows and columns of its argument.

Laziness

transpose is lazy in its elements

Example1 expression
take 1 (transpose ['a' : undefined, 'b' : undefined])["ab"]
Examples
Example1 expression
transpose [[1,2,3],[4,5,6]][[1,4],[2,5],[3,6]]

If some of the rows are shorter than the following rows, their elements are skipped:

Example1 expression
transpose [[10,11],[20],[],[30,31,32]][[10,20,30],[11,31],[32]]

For this reason the outer list must be finite; otherwise transpose hangs:

Example1 expression
transpose (repeat [])* Hangs forever *
valueunfoldr :: (b -> Maybe (a, b)) -> b -> [a]
#

The unfoldr function is a `dual' to foldr: while foldr reduces a list to a summary value, unfoldr builds a list from a seed value. The function takes the element and returns Nothing if it is done producing the list or returns Just (a,b), in which case, a is a prepended to the list and b is used as the next element in a recursive call. For example,

iterate f == unfoldr (\x -> Just (x, f x))

In some cases, unfoldr can undo a foldr operation:

unfoldr f' (foldr f z xs) == xs

if the following holds:

f' (f x y) = Just (x,y)
f' z       = Nothing
Laziness
Example1 expression
take 1 (unfoldr (\x -> Just (x, undefined)) 'a')"a"
Examples
Example1 expression
unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10[10,9,8,7,6,5,4,3,2,1]
Example1 expression
take 10 $ unfoldr (\(x, y) -> Just (x, (y, x + y))) (0, 1)[0,1,1,2,3,5,8,13,21,54]
valuecomparing :: Ord a => (b -> a) -> b -> b -> Ordering
#
comparing p x y = compare (p x) (p y)

Useful combinator for use in conjunction with the xxxBy family of functions from Data.List, for example:

  ... sortBy (comparing fst) ...
valueforM :: (Traversable t, Monad m) => t a -> (a -> m b) -> m (t b)
#

forM is mapM with its arguments flipped. For a version that ignores the results see Data.Foldable.forM_.

valuemapAccumL :: Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b)
#

The mapAccumL function behaves like a combination of fmap and foldl; it applies a function to each element of a structure, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new structure.

Examples

Basic usage:

Example1 expression
mapAccumL (\a b -> (a + b, a)) 0 [1..10](55,[0,1,3,6,10,15,21,28,36,45])
Example1 expression
mapAccumL (\a b -> (a <> show b, a)) "0" [1..5]("012345",["0","01","012","0123","01234"])
valuemapAccumM
  1. :: (Monad m, Traversable t)
  2. => s -> a -> m (s, b)
  3. -> s
  4. -> t a
  5. -> m (s, t b)
#

The mapAccumM function behaves like a combination of mapM and mapAccumL that traverses the structure while evaluating the actions and passing an accumulating parameter from left to right. It returns a final value of this accumulator together with the new structure. The accumulator is often used for caching the intermediate results of a computation.

Examples

Basic usage:

Example2 expressions
let expensiveDouble a = putStrLn ("Doubling " <> show a) >> pure (2 * a):{mapAccumM (\cache a -> case lookup a cache of    Nothing -> expensiveDouble a >>= \double -> pure ((a, double):cache, double)    Just double -> pure (cache, double)    ) [] [1, 2, 3, 1, 2, 3]:}Doubling 1Doubling 2Doubling 3([(3,6),(2,4),(1,2)],[2,4,6,2,4,6])
valuemapAccumR :: Traversable t => (s -> a -> (s, b)) -> s -> t a -> (s, t b)
#

The mapAccumR function behaves like a combination of fmap and foldr; it applies a function to each element of a structure, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new structure.

Examples

Basic usage:

Example1 expression
mapAccumR (\a b -> (a + b, a)) 0 [1..10](55,[54,52,49,45,40,34,27,19,10,0])
Example1 expression
mapAccumR (\a b -> (a <> show b, a)) "0" [1..5]("054321",["05432","0543","054","05","0"])
valuecurry :: ((a, b) -> c) -> a -> b -> c
#

Convert an uncurried function to a curried function.

Examples
Example1 expression
curry fst 1 21
valuefst :: (a, b) -> a
#

Extract the first component of a pair.

valuesnd :: (a, b) -> b
#

Extract the second component of a pair.

valueswap :: (a, b) -> (b, a)
#

Swap the components of a pair.

valueuncurry :: (a -> b -> c) -> (a, b) -> c
#

uncurry converts a curried function to a function on pairs.

Examples
Example1 expression
uncurry (+) (1,2)3
Example1 expression
uncurry ($) (show, 1)"1"
Example1 expression
map (uncurry max) [(1,2), (3,4), (6,8)][2,4,8]
valuerepr :: a :~: b -> Coercion a b
#

Convert propositional (nominal) equality to representational equality

valuecastWith :: a :~: b -> a -> b
#

Type-safe cast, using propositional equality

valuegcastWith :: a :~: b -> (a ~ b => r) -> r
#

Generalized form of type-safe cast using propositional equality

valuesym :: a :~: b -> b :~: a
#

Symmetry of equality

valuetypeRep :: Typeable a => proxy a -> TypeRep
#

Takes a value of type a and returns a concrete representation of that type.

valuecatch
  1. :: Exception e
  2. => IO a

    The computation to run

  3. -> (e -> IO a)

    Handler to invoke if an exception is raised

  4. -> IO a
#

This is the simplest of the exception-catching functions. It takes a single argument, runs it, and if an exception is raised the "handler" is executed, with the value of the exception passed as an argument. Otherwise, the result is returned as normal. For example:

  catch (readFile f)
        (\e -> do let err = show (e :: IOException)
                  hPutStr stderr ("Warning: Couldn't open " ++ f ++ ": " ++ err)
                  return "")

Note that we have to give a type signature to e, or the program will not typecheck as the type is ambiguous. While it is possible to catch exceptions of any type, see the section "Catching all exceptions" (in Control.Exception) for an explanation of the problems with doing so.

For catching exceptions in pure (non-IO) expressions, see the function evaluate.

Note that due to Haskell's unspecified evaluation order, an expression may throw one of several possible exceptions: consider the expression (error "urk") + (1 `div` 0). Does the expression throw ErrorCall "urk", or DivideByZero?

The answer is "it might throw either"; the choice is non-deterministic. If you are catching any type of exception then you might catch either. If you are calling catch with type IO Int -> (ArithException -> IO Int) -> IO Int then the handler may get run with DivideByZero as an argument, or an ErrorCall "urk" exception may be propagated further up. If you call it again, you might get the opposite behaviour. This is ok, because catch is an IO computation.

valueevaluate :: a -> IO a
#

Evaluate the argument to weak head normal form.

evaluate is typically used to uncover any exceptions that a lazy value may contain, and possibly handle them.

evaluate only evaluates to weak head normal form. If deeper evaluation is needed, the force function from Control.DeepSeq may be handy:

evaluate $ force x

There is a subtle difference between evaluate x and return $! x, analogous to the difference between throwIO and throw. If the lazy value x throws an exception, return $! x will fail to return an IO action and will throw an exception instead. evaluate x, on the other hand, always produces an IO action; that action will throw an exception upon execution iff x throws an exception upon evaluation.

The practical implication of this difference is that due to the imprecise exceptions semantics,

(return $! error "foo") >> error "bar"

may throw either "foo" or "bar", depending on the optimizations performed by the compiler. On the other hand,

evaluate (error "foo") >> error "bar"

is guaranteed to throw "foo".

The rule of thumb is to use evaluate to force or handle exceptions in lazy values. If, on the other hand, you are forcing a lazy value for efficiency reasons only and do not care about exceptions, you may use return $! x.

valueinterruptible :: IO a -> IO a
#

Allow asynchronous exceptions to be raised even inside mask, making the operation interruptible (see the discussion of "Interruptible operations" in Control.Exception).

When called outside mask, or inside uninterruptibleMask, this function has no effect.

valuemask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
#

Executes an IO computation with asynchronous exceptions masked. That is, any thread which attempts to raise an exception in the current thread with throwTo will be blocked until asynchronous exceptions are unmasked again.

The argument passed to mask is a function that takes as its argument another function, which can be used to restore the prevailing masking state within the context of the masked computation. For example, a common way to use mask is to protect the acquisition of a resource:

mask $ \restore -> do
    x <- acquire
    restore (do_something_with x) `onException` release
    release

This code guarantees that acquire is paired with release, by masking asynchronous exceptions for the critical parts. (Rather than write this code yourself, it would be better to use bracket which abstracts the general pattern).

Note that the restore action passed to the argument to mask does not necessarily unmask asynchronous exceptions, it just restores the masking state to that of the enclosing context. Thus if asynchronous exceptions are already masked, mask cannot be used to unmask exceptions again. This is so that if you call a library function with exceptions masked, you can be sure that the library call will not be able to unmask exceptions again. If you are writing library code and need to use asynchronous exceptions, the only way is to create a new thread; see forkIOWithUnmask.

Asynchronous exceptions may still be received while in the masked state if the masked thread blocks in certain ways; see Control.Exception#interruptible.

Threads created by forkIO inherit the MaskingState from the parent; that is, to start a thread in the MaskedInterruptible state, use mask_ $ forkIO .... This is particularly useful if you need to establish an exception handler in the forked thread before any asynchronous exceptions are received. To create a new thread in an unmasked state use forkIOWithUnmask.

valuemask_ :: IO a -> IO a
#

Like mask, but does not pass a restore action to the argument.

valueuninterruptibleMask :: ((forall a. IO a -> IO a) -> IO b) -> IO b
#

Like mask, but the masked computation is not interruptible (see Control.Exception#interruptible). THIS SHOULD BE USED WITH GREAT CARE, because if a thread executing in uninterruptibleMask blocks for any reason, then the thread (and possibly the program, if this is the main thread) will be unresponsive and unkillable. This function should only be necessary if you need to mask exceptions around an interruptible operation, and you can guarantee that the interruptible operation will only block for a short period of time.

valueopenFile
  1. :: FilePath

    The path to the file that should be opened

  2. -> IOMode

    The mode in which the file should be opened

  3. -> IO Handle
#

The computation openFile path mode returns a file handle that can be used to interact with the file.

The handle is open in text mode with localeEncoding. You can change the encoding with System.IO.hSetEncoding.

valuewithFile
  1. :: FilePath

    The path to the file that should be opened

  2. -> IOMode

    The mode in which the file should be opened

  3. -> (Handle -> IO r)

    The action to run with the obtained handle

  4. -> IO r
#

The computation withFile path mode action opens the file and runs action with the obtained handle before closing the file.

Even when an exception is raised within the action, the file will still be closed. This is why withFile path mode act is preferable to

openFile path mode >>= (\hdl -> act hdl >>= System.IO.hClose hdl)

See also: System.IO.bracket

valuebreak :: (a -> Bool) -> [a] -> ([a], [a])
#

break, applied to a predicate p and a list xs, returns a tuple where first element is longest prefix (possibly empty) of xs of elements that do not satisfy p and second element is the remainder of the list:

break p is equivalent to span (not . p) and consequently to (takeWhile (not . p) xs, dropWhile (not . p) xs), even if p is _|_.

Laziness
Example1 expression
break undefined []([],[])
Example1 expression
fst (break (const True) undefined)*** Exception: Prelude.undefined
Example1 expression
fst (break (const True) (undefined : undefined))[]
Example1 expression
take 1 (fst (break (const False) (1 : undefined)))[1]

break produces the first component of the tuple lazily:

Example1 expression
take 10 (fst (break (const False) [1..]))[1,2,3,4,5,6,7,8,9,10]
Examples
Example1 expression
break (> 3) [1,2,3,4,1,2,3,4]([1,2,3],[4,1,2,3,4])
Example1 expression
break (< 9) [1,2,3]([],[1,2,3])
Example1 expression
break (> 9) [1,2,3]([1,2,3],[])
valuecycle :: HasCallStack => [a] -> [a]
#

cycle ties a finite list into a circular one, or equivalently, the infinite repetition of the original list. It is the identity on infinite lists.

Examples
Example1 expression
cycle []*** Exception: Prelude.cycle: empty list
Example1 expression
take 10 (cycle [42])[42,42,42,42,42,42,42,42,42,42]
Example1 expression
take 10 (cycle [2, 5, 7])[2,5,7,2,5,7,2,5,7,2]
Example1 expression
take 1 (cycle (42 : undefined))[42]
valuedrop :: Int -> [a] -> [a]
#

drop n xs returns the suffix of xs after the first n elements, or [] if n >= length xs.

It is an instance of the more general genericDrop, in which n may be of any integral type.

Examples
Example1 expression
drop 6 "Hello World!""World!"
Example1 expression
drop 3 [1,2,3,4,5][4,5]
Example1 expression
drop 3 [1,2][]
Example1 expression
drop 3 [][]
Example1 expression
drop (-1) [1,2][1,2]
Example1 expression
drop 0 [1,2][1,2]
valuedropWhile :: (a -> Bool) -> [a] -> [a]
#

dropWhile p xs returns the suffix remaining after takeWhile p xs.

Examples
Example1 expression
dropWhile (< 3) [1,2,3,4,5,1,2,3][3,4,5,1,2,3]
Example1 expression
dropWhile (< 9) [1,2,3][]
Example1 expression
dropWhile (< 0) [1,2,3][1,2,3]
valuefilter :: (a -> Bool) -> [a] -> [a]
#

\mathcal{O}(n). filter, applied to a predicate and a list, returns the list of those elements that satisfy the predicate; i.e.,

filter p xs = [ x | x <- xs, p x]
Examples
Example1 expression
filter odd [1, 2, 3][1,3]
Example1 expression
filter (\l -> length l > 3) ["Hello", ", ", "World", "!"]["Hello","World"]
Example1 expression
filter (/= 3) [1, 2, 3, 4, 3, 2, 1][1,2,4,2,1]
valueiterate :: (a -> a) -> a -> [a]
#

iterate f x returns an infinite list of repeated applications of f to x:

iterate f x == [x, f x, f (f x), ...]
Laziness

Note that iterate is lazy, potentially leading to thunk build-up if the consumer doesn't force each iterate. See iterate' for a strict variant of this function.

Example1 expression
take 1 $ iterate undefined 42[42]
Examples
Example1 expression
take 10 $ iterate not True[True,False,True,False,True,False,True,False,True,False]
Example1 expression
take 10 $ iterate (+3) 42[42,45,48,51,54,57,60,63,66,69]

iterate id == repeat:

Example1 expression
take 10 $ iterate id 1[1,1,1,1,1,1,1,1,1,1]
valuerepeat :: a -> [a]
#

repeat x is an infinite list, with x the value of every element.

Examples
Example1 expression
take 10 $ repeat 17[17,17,17,17,17,17,17,17,17, 17]
Example1 expression
repeat undefined[*** Exception: Prelude.undefined
valuereplicate :: Int -> a -> [a]
#

replicate n x is a list of length n with x the value of every element. It is an instance of the more general genericReplicate, in which n may be of any integral type.

Examples
Example1 expression
replicate 0 True[]
Example1 expression
replicate (-1) True[]
Example1 expression
replicate 4 True[True,True,True,True]
valuereverse :: [a] -> [a]
#

\mathcal{O}(n). reverse xs returns the elements of xs in reverse order. xs must be finite.

Laziness

reverse is lazy in its elements.

Example1 expression
head (reverse [undefined, 1])1
Example1 expression
reverse (1 : 2 : undefined)*** Exception: Prelude.undefined
Examples
Example1 expression
reverse [][]
Example1 expression
reverse [42][42]
Example1 expression
reverse [2,5,7][7,5,2]
Example1 expression
reverse [1..]* Hangs forever *
valuescanl :: (b -> a -> b) -> b -> [a] -> [b]
#

\mathcal{O}(n). scanl is similar to foldl, but returns a list of successive reduced values from the left:

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

Note that

last (scanl f z xs) == foldl f z xs
Examples
Example1 expression
scanl (+) 0 [1..4][0,1,3,6,10]
Example1 expression
scanl (+) 42 [][42]
Example1 expression
scanl (-) 100 [1..4][100,99,97,94,90]
Example1 expression
scanl (\reversedString nextChar -> nextChar : reversedString) "foo" ['a', 'b', 'c', 'd']["foo","afoo","bafoo","cbafoo","dcbafoo"]
Example1 expression
take 10 (scanl (+) 0 [1..])[0,1,3,6,10,15,21,28,36,45]
Example1 expression
take 1 (scanl undefined 'a' undefined)"a"
valuescanl' :: (b -> a -> b) -> b -> [a] -> [b]
#

\mathcal{O}(n). A strict version of scanl.

valuescanr :: (a -> b -> b) -> b -> [a] -> [b]
#

\mathcal{O}(n). scanr is the right-to-left dual of scanl. Note that the order of parameters on the accumulating function are reversed compared to scanl. Also note that

head (scanr f z xs) == foldr f z xs.
Examples
Example1 expression
scanr (+) 0 [1..4][10,9,7,4,0]
Example1 expression
scanr (+) 42 [][42]
Example1 expression
scanr (-) 100 [1..4][98,-97,99,-96,100]
Example1 expression
scanr (\nextChar reversedString -> nextChar : reversedString) "foo" ['a', 'b', 'c', 'd']["abcdfoo","bcdfoo","cdfoo","dfoo","foo"]
Example1 expression
force $ scanr (+) 0 [1..]*** Exception: stack overflow
valuesplitAt :: Int -> [a] -> ([a], [a])
#

splitAt n xs returns a tuple where first element is xs prefix of length n and second element is the remainder of the list:

splitAt is an instance of the more general genericSplitAt, in which n may be of any integral type.

Laziness

It is equivalent to (take n xs, drop n xs) unless n is _|_: splitAt _|_ xs = _|_, not (_|_, _|_)).

The first component of the tuple is produced lazily:

Example1 expression
fst (splitAt 0 undefined)[]
Example1 expression
take 1 (fst (splitAt 10 (1 : undefined)))[1]
Examples
Example1 expression
splitAt 6 "Hello World!"("Hello ","World!")
Example1 expression
splitAt 3 [1,2,3,4,5]([1,2,3],[4,5])
Example1 expression
splitAt 1 [1,2,3]([1],[2,3])
Example1 expression
splitAt 3 [1,2,3]([1,2,3],[])
Example1 expression
splitAt 4 [1,2,3]([1,2,3],[])
Example1 expression
splitAt 0 [1,2,3]([],[1,2,3])
Example1 expression
splitAt (-1) [1,2,3]([],[1,2,3])
valuetake :: Int -> [a] -> [a]
#

take n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n >= length xs.

It is an instance of the more general genericTake, in which n may be of any integral type.

Laziness
Example2 expressions
take 0 undefined[]take 2 (1 : 2 : undefined)[1,2]
Examples
Example1 expression
take 5 "Hello World!""Hello"
Example1 expression
take 3 [1,2,3,4,5][1,2,3]
Example1 expression
take 3 [1,2][1,2]
Example1 expression
take 3 [][]
Example1 expression
take (-1) [1,2][]
Example1 expression
take 0 [1,2][]
valuetakeWhile :: (a -> Bool) -> [a] -> [a]
#

takeWhile, applied to a predicate p and a list xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p.

Laziness
Example1 expression
takeWhile (const False) undefined*** Exception: Prelude.undefined
Example1 expression
takeWhile (const False) (undefined : undefined)[]
Example1 expression
take 1 (takeWhile (const True) (1 : undefined))[1]
Examples
Example1 expression
takeWhile (< 3) [1,2,3,4,1,2,3,4][1,2]
Example1 expression
takeWhile (< 9) [1,2,3][1,2,3]
Example1 expression
takeWhile (< 0) [1,2,3][]
valueunzip :: [(a, b)] -> ([a], [b])
#

unzip transforms a list of pairs into a list of first components and a list of second components.

Examples
Example1 expression
unzip []([],[])
Example1 expression
unzip [(1, 'a'), (2, 'b')]([1,2],"ab")
valuezip :: [a] -> [b] -> [(a, b)]
#

\mathcal{O}(\min(m,n)). zip takes two lists and returns a list of corresponding pairs.

zip is right-lazy:

Example2 expressions
zip [] undefined[]zip undefined []*** Exception: Prelude.undefined...

zip is capable of list fusion, but it is restricted to its first list argument and its resulting list.

Examples
Example1 expression
zip [1, 2, 3] ['a', 'b', 'c'][(1,'a'),(2,'b'),(3,'c')]

If one input list is shorter than the other, excess elements of the longer list are discarded, even if one of the lists is infinite:

Example1 expression
zip [1] ['a', 'b'][(1,'a')]
Example1 expression
zip [1, 2] ['a'][(1,'a')]
Example1 expression
zip [] [1..][]
Example1 expression
zip [1..] [][]
valuezipWith :: (a -> b -> c) -> [a] -> [b] -> [c]
#

\mathcal{O}(\min(m,n)). zipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function.

zipWith (,) xs ys == zip xs ys
zipWith f [x1,x2,x3..] [y1,y2,y3..] == [f x1 y1, f x2 y2, f x3 y3..]

zipWith is right-lazy:

Example2 expressions
let f = undefinedzipWith f [] undefined[]

zipWith is capable of list fusion, but it is restricted to its first list argument and its resulting list.

Examples

zipWith (+) can be applied to two lists to produce the list of corresponding sums:

Example1 expression
zipWith (+) [1, 2, 3] [4, 5, 6][5,7,9]
Example1 expression
zipWith (++) ["hello ", "foo"] ["world!", "bar"]["hello world!","foobar"]
valueisEmptyMVar :: MVar a -> IO Bool
#

Check whether a given MVar is empty.

Notice that the boolean value returned is just a snapshot of the state of the MVar. By the time you get to react on its result, the MVar may have been filled (or emptied) - so be extremely careful when using this operation. Use tryTakeMVar instead if possible.

valueputMVar :: MVar a -> a -> IO ()
#

Put a value into an MVar. If the MVar is currently full, putMVar will wait until it becomes empty.

There are two further important properties of putMVar:

  • putMVar is single-wakeup. That is, if there are multiple threads blocked in putMVar, and the MVar becomes empty, only one thread will be woken up. The runtime guarantees that the woken thread completes its putMVar operation.

  • When multiple threads are blocked on an MVar, they are woken up in FIFO order. This is useful for providing fairness properties of abstractions built using MVars.

valuereadMVar :: MVar a -> IO a
#

Atomically read the contents of an MVar. If the MVar is currently empty, readMVar will wait until it is full. readMVar is guaranteed to receive the next putMVar.

readMVar is multiple-wakeup, so when multiple readers are blocked on an MVar, all of them are woken up at the same time. The runtime guarantees that all woken threads complete their readMVar operation.

Compatibility note: Prior to base 4.7, readMVar was a combination of takeMVar and putMVar. This mean that in the presence of other threads attempting to putMVar, readMVar could block. Furthermore, readMVar would not receive the next putMVar if there was already a pending thread blocked on takeMVar. The old behavior can be recovered by implementing 'readMVar as follows:

readMVar :: MVar a -> IO a
readMVar m =
  mask_ $ do
    a <- takeMVar m
    putMVar m a
    return a
valuetakeMVar :: MVar a -> IO a
#

Return the contents of the MVar. If the MVar is currently empty, takeMVar will wait until it is full. After a takeMVar, the MVar is left empty.

There are two further important properties of takeMVar:

  • takeMVar is single-wakeup. That is, if there are multiple threads blocked in takeMVar, and the MVar becomes full, only one thread will be woken up. The runtime guarantees that the woken thread completes its takeMVar operation.

  • When multiple threads are blocked on an MVar, they are woken up in FIFO order. This is useful for providing fairness properties of abstractions built using MVars.

valuelexLitChar :: ReadS String
#

Read a string representation of a character, using Haskell source-language escape conventions. For example:

lexLitChar  "\\nHello"  =  [("\\n", "Hello")]
valuereadLitChar :: ReadS Char
#

Read a string representation of a character, using Haskell source-language escape conventions, and convert it to the character that it encodes. For example:

readLitChar "\\nHello"  =  [('\n', "Hello")]
value(%) :: Integral a => a -> a -> Ratio a
#

Forms the ratio of two integral numbers.

value(^) :: (Num a, Integral b) => a -> b -> a
#

raise a number to a non-negative integral power

valuedenominator :: Ratio a -> a
#

Extract the denominator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.

valuefromIntegral :: (Integral a, Num b) => a -> b
#

General coercion from Integral types.

WARNING: This function performs silent truncation if the result type is not at least as big as the argument's type.

valuegcd :: Integral a => a -> a -> a
#

gcd x y is the non-negative factor of both x and y of which every common factor of x and y is also a factor; for example gcd 4 2 = 2, gcd (-4) 6 = 2, gcd 0 4 = 4. gcd 0 0 = 0. (That is, the common divisor that is "greatest" in the divisibility preordering.)

Note: Since for signed fixed-width integer types, abs minBound < 0, the result may be negative if one of the arguments is minBound (and necessarily is if the other is 0 or minBound) for such types.

valuelcm :: Integral a => a -> a -> a
#

lcm x y is the smallest positive integer that both x and y divide.

valuenumerator :: Ratio a -> a
#

Extract the numerator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.

valuerealToFrac :: (Real a, Fractional b) => a -> b
#

General coercion to Fractional types.

WARNING: This function goes through the Rational type, which does not have values for NaN for example. This means it does not round-trip.

For Double it also behaves differently with or without -O0:

Prelude> realToFrac nan -- With -O0
-Infinity
Prelude> realToFrac nan
NaN
valuereduce :: Integral a => a -> a -> Ratio a
#

reduce is a subsidiary function used only in this module. It normalises a ratio by dividing both numerator and denominator by their greatest common divisor.

valueshowSigned
  1. :: Real a
  2. => (a -> ShowS)

    a function that can show unsigned values

  3. -> Int

    the precedence of the enclosing context

  4. -> a

    the value to show

  5. -> ShowS
#

Converts a possibly-negative Real value to a string.

valueintToDigit :: Int -> Char
#

Convert an Int in the range 0..15 to the corresponding single digit Char. This function fails on other inputs, and generates lower-case hexadecimal digits.

valueshowLitChar :: Char -> ShowS
#

Convert a character to a string using only printable characters, using Haskell source-language escape conventions. For example:

showLitChar '\n' s  =  "\\n" ++ s
valueerrorWithStackTrace :: String -> a
#

Deprecated. error appends the call stack now

Like the function error, but appends a stack trace to the error message if one is available.

valueclearCCS :: IO a -> IO a
#

Run a computation with an empty cost-center stack. For example, this is used by the interpreter to run an interpreted computation without the call stack showing that it was invoked from GHC.

valuecurrentCallStack :: IO [String]
#

Returns a [String] representing the current call stack. This can be useful for debugging.

The implementation uses the call-stack simulation maintained by the profiler, so it only works if the program was compiled with -prof and contains suitable SCC annotations (e.g. by using -fprof-auto). Otherwise, the list returned is likely to be empty or uninformative.

valuegetCurrentCCS :: dummy -> IO (Ptr CostCentreStack)
#

Returns the current CostCentreStack (value is nullPtr if the current program was not compiled with profiling support). Takes a dummy argument which can be used to avoid the call to getCurrentCCS being floated out by the simplifier, which would result in an uninformative stack (CAF).

Freeze a call-stack, preventing any further call-sites from being appended.

Property
pushCallStack callSite (freezeCallStack callStack) = freezeCallStack callStack
valueexitWith :: ExitCode -> IO a
#

Computation exitWith code throws ExitCode code. Normally this terminates the program, returning code to the program's caller.

On program termination, the standard Handles stdout and stderr are flushed automatically; any other buffered Handles need to be flushed manually, otherwise the buffered data will be discarded.

A program that fails in any other way is treated as if it had called exitFailure. A program that terminates successfully without calling exitWith explicitly is treated as if it had called exitWith ExitSuccess.

As an ExitCode is an Exception, it can be caught using the functions of Control.Exception. This means that cleanup computations added with bracket (from Control.Exception) are also executed properly on exitWith.

Note: in GHC, exitWith should be called from the main program thread in order to exit the process. When called from another thread, exitWith will throw an ExitCode as normal, but the exception will not cause the process itself to exit.

The Unicode general category of the character. This relies on the Enum instance of GeneralCategory, which must remain in the same order as the categories are presented in the Unicode standard.

Examples

Basic usage:

Example7 expressions
generalCategory 'a'LowercaseLettergeneralCategory 'A'UppercaseLettergeneralCategory '0'DecimalNumbergeneralCategory '%'OtherPunctuationgeneralCategory '♥'OtherSymbolgeneralCategory '\31'ControlgeneralCategory ' 'Space
valueisAlpha :: Char -> Bool
#

Selects alphabetic Unicode characters (lower-case, upper-case and title-case letters, plus letters of caseless scripts and modifiers letters). This function is equivalent to isLetter.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Letter".

valueisAlphaNum :: Char -> Bool
#

Selects alphabetic or numeric Unicode characters.

Note that numeric digits outside the ASCII range, as well as numeric characters which aren't digits, are selected by this function but not by isDigit. Such characters may be part of identifiers but are not used by the printer and reader to represent numbers, e.g., Roman numerals like V, full-width digits like '1' (aka '65297').

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

valueisAscii :: Char -> Bool
#

Selects the first 128 characters of the Unicode character set, corresponding to the ASCII character set.

valueisControl :: Char -> Bool
#

Selects control characters, which are the non-printing characters of the Latin-1 subset of Unicode.

valueisHexDigit :: Char -> Bool
#

Selects ASCII hexadecimal digits, i.e. '0'..'9', 'a'..'f', 'A'..'F'.

valueisLatin1 :: Char -> Bool
#

Selects the first 256 characters of the Unicode character set, corresponding to the ISO 8859-1 (Latin-1) character set.

valueisLower :: Char -> Bool
#

Selects lower-case alphabetic Unicode characters (letters).

Note: this predicate does not work for letter-like characters such as: 'ⓐ' (U+24D0 circled Latin small letter a) and 'ⅳ' (U+2173 small Roman numeral four). This is due to selecting only characters with the GeneralCategory LowercaseLetter.

See isLowerCase for a more intuitive predicate.

valueisLowerCase :: Char -> Bool
#

Selects lower-case Unicode letter-like characters.

Note: this predicate selects characters with the Unicode property Lowercase, which includes letter-like characters such as: 'ⓐ' (U+24D0 circled Latin small letter a) and 'ⅳ' (U+2173 small Roman numeral four).

See isLower for the legacy predicate.

valueisPunctuation :: Char -> Bool
#

Selects Unicode punctuation characters, including various kinds of connectors, brackets and quotes.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Punctuation".

Examples

Basic usage:

Example6 expressions
isPunctuation 'a'FalseisPunctuation '7'FalseisPunctuation '♥'FalseisPunctuation '"'TrueisPunctuation '?'TrueisPunctuation '—'True
valueisSpace :: Char -> Bool
#

Returns True for any Unicode space character, and the control characters \t, \n, \r, \f, \v.

valueisSymbol :: Char -> Bool
#

Selects Unicode symbol characters, including mathematical and currency symbols.

This function returns True if its argument has one of the following GeneralCategorys, or False otherwise:

These classes are defined in the Unicode Character Database, part of the Unicode standard. The same document defines what is and is not a "Symbol".

Examples

Basic usage:

Example3 expressions
isSymbol 'a'FalseisSymbol '6'FalseisSymbol '='True

The definition of "math symbol" may be a little counter-intuitive depending on one's background:

Example2 expressions
isSymbol '+'TrueisSymbol '-'False
valueisUpper :: Char -> Bool
#

Selects upper-case or title-case alphabetic Unicode characters (letters). Title case is used by a small number of letter ligatures like the single-character form of Lj.

Note: this predicate does not work for letter-like characters such as: 'Ⓐ' (U+24B6 circled Latin capital letter A) and 'Ⅳ' (U+2163 Roman numeral four). This is due to selecting only characters with the GeneralCategory UppercaseLetter or TitlecaseLetter.

See isUpperCase for a more intuitive predicate. Note that unlike isUpperCase, isUpper does select title-case characters such as 'Dž' (U+01C5 Latin capital letter d with small letter z with caron) or 'ᾯ' (U+1FAF Greek capital letter omega with dasia and perispomeni and prosgegrammeni).

valueisUpperCase :: Char -> Bool
#

Selects upper-case Unicode letter-like characters.

Note: this predicate selects characters with the Unicode property Uppercase, which include letter-like characters such as: 'Ⓐ' (U+24B6 circled Latin capital letter A) and 'Ⅳ' (U+2163 Roman numeral four).

See isUpper for the legacy predicate. Note that unlike isUpperCase, isUpper does select title-case characters such as 'Dž' (U+01C5 Latin capital letter d with small letter z with caron) or 'ᾯ' (U+1FAF Greek capital letter omega with dasia and perispomeni and prosgegrammeni).

valuetoLower :: Char -> Char
#

Convert a letter to the corresponding lower-case letter, if any. Any other character is returned unchanged.

valuetoTitle :: Char -> Char
#

Convert a letter to the corresponding title-case or upper-case letter, if any. (Title case differs from upper case only for a small number of ligature letters.) Any other character is returned unchanged.

valuetoUpper :: Char -> Char
#

Convert a letter to the corresponding upper-case letter, if any. Any other character is returned unchanged.

valueasks
  1. :: MonadReader r m
  2. => (r -> a)

    The selector function to apply to the environment.

  3. -> m a
#

Retrieves a function of the current environment.

valuegets :: MonadState s m => (s -> a) -> m a
#

Gets specific component of the state, using a projection function supplied.

valuemodify :: MonadState s m => (s -> s) -> m ()
#

Monadic state transformer.

Maps an old state to a new state inside a state monad. The old state is thrown away.

     Main> :t modify ((+1) :: Int -> Int)
     modify (...) :: (MonadState Int a) => a ()

This says that modify (+1) acts over any Monad that is a member of the MonadState class, with an Int state.

valuecheck :: Bool -> STM ()
#

Check that the boolean condition is true and, if not, retry.

In other words, check b = unless b retry.

valuelines :: Text -> [Text]
#

O(n) Breaks a Text up into a list of Texts at newline characters '\n' (LF, line feed). The resulting strings do not contain newlines.

lines does not treat '\r' (CR, carriage return) as a newline character.

valueunlines :: [Text] -> Text
#

O(n) Joins lines, after appending a terminating newline to each.

valueunwords :: [Text] -> Text
#

O(n) Joins words using single space characters.

valuewords :: Text -> [Text]
#

O(n) Breaks a Text up into a list of words, delimited by Chars representing white space.

valuedecodeUtf8 :: ByteString -> Text
#

Decode a ByteString containing UTF-8 encoded text that is known to be valid.

If the input contains any invalid UTF-8 data, an exception will be thrown that cannot be caught in pure code. For more control over the handling of invalid data, use decodeUtf8' or decodeUtf8With.

This is a partial function: it checks that input is a well-formed UTF-8 sequence and copies buffer or throws an error otherwise.

valueignore :: OnError a b
#

Ignore an invalid input, substituting nothing in the output.

valuereplace :: b -> OnError a b
#

Replace an invalid input with a valid output.

valuewithExcept :: (e -> e') -> Except e a -> Except e' a
#

Transform any exceptions thrown by the computation using the given function (a specialization of withExceptT).

valuerunReader
  1. :: Reader r a

    A Reader to run.

  2. -> r

    An initial environment.

  3. -> a
#

Runs a Reader and extracts the final value from it. (The inverse of reader.)

valueevalState
  1. :: State s a

    state-passing computation to execute

  2. -> s

    initial value

  3. -> a

    return value of the state computation

#

Evaluate a state computation with the given initial state and return the final value, discarding the final state.

valueexecState
  1. :: State s a

    state-passing computation to execute

  2. -> s

    initial value

  3. -> s

    final state

#

Evaluate a state computation with the given initial state and return the final state, discarding the final value.

valuerunState
  1. :: State s a

    state-passing computation to execute

  2. -> s

    initial state

  3. -> (a, s)

    return value and final state

#

Unwrap a state monad computation as a function. (The inverse of state.)

datadata Async a
#

An asynchronous action spawned by async or withAsync. Asynchronous actions are executed in a separate thread, and operations are provided for waiting for asynchronous actions to complete and obtaining their results (see e.g. wait).

Instances4Functor, Eq, Ord, Hashable
  • Functor AsyncDefined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Eq (Async a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Ord (Async a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Hashable (Async a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
newtypenewtype Concurrently a
#

A value of type Concurrently a is an IO operation that can be composed with other Concurrently values, using the Applicative and Alternative instances.

Calling runConcurrently on a value of type Concurrently a will execute the IO operations it contains concurrently, before delivering the result of type a.

For example

(page1, page2, page3)
    <- runConcurrently $ (,,)
    <$> Concurrently (getURL "url1")
    <*> Concurrently (getURL "url2")
    <*> Concurrently (getURL "url3")
Instances5Functor, Applicative, Alternative, Semigroup, Monoid
classclass (forall a. Functor (p a)) => Bifunctor (p :: Type -> Type -> Type) where
#

A bifunctor is a type constructor that takes two type arguments and is a functor in both arguments. That is, unlike with Functor, a type constructor such as Either does not need to be partially applied for a Bifunctor instance, and the methods in this class permit mapping functions over the Left value or the Right value, or both at the same time.

Formally, the class Bifunctor represents a bifunctor from Hask -> Hask.

Intuitively it is a bifunctor where both the first and second arguments are covariant.

The class definition of a Bifunctor p uses the QuantifiedConstraints language extension to quantify over the first type argument a in its context. The context requires that p a must be a Functor for all a. In other words a partially applied Bifunctor must be a Functor. This makes Functor a superclass of Bifunctor such that a function with a Bifunctor constraint may use fmap in its implementation. Functor has been a quantified superclass of Bifunctor since base-4.18.0.0.

You can define a Bifunctor by either defining bimap or by defining both first and second. The second method must agree with fmap:

second ≡ fmap

From this it follows that:

second id ≡ id

If you supply bimap, you should ensure that:

bimap id id ≡ id

If you supply first and second, ensure:

first id ≡ id
second id ≡ id

If you supply both, you should also ensure:

bimap f g ≡ first f . second g

These ensure by parametricity:

bimap  (f . g) (h . i) ≡ bimap f h . bimap g i
first  (f . g) ≡ first  f . first  g
second (f . g) ≡ second f . second g

Methods

  • bimap :: (a -> b) -> (c -> d) -> p a c -> p b d

    Map over both arguments at the same time.

    bimap f g ≡ first f . second g
    Examples
    Example1 expression
    bimap toUpper (+1) ('j', 3)('J',4)
    Example1 expression
    bimap toUpper (+1) (Left 'j')Left 'J'
    Example1 expression
    bimap toUpper (+1) (Right 3)Right 4
  • first :: (a -> b) -> p a c -> p b c

    Map covariantly over the first argument.

    first f ≡ bimap f id
    Examples
    Example1 expression
    first toUpper ('j', 3)('J',3)
    Example1 expression
    first toUpper (Left 'j')Left 'J'
  • second :: (b -> c) -> p a b -> p a c

    Map covariantly over the second argument.

    second ≡ bimap id
    Examples
    Example1 expression
    second (+1) ('j', 3)('j',4)
    Example1 expression
    second (+1) (Right 3)Right 4
Instances29Bifunctor, …
datadata ByteString
#

A space-efficient representation of a Word8 vector, supporting many efficient operations.

A ByteString contains 8-bit bytes, or by using the operations from Data.ByteString.Char8 it can be interpreted as containing 8-bit characters.

Instances27IsList, Eq, Data, Ord, Read, Show, …
classclass ConvertText a b where
#

Convert from one Unicode textual type to another. Not for serialization/deserialization, so doesn't have instances for bytestrings.

Methods

Instances13ConvertText, …
classclass ToByteString a where
#

Methods

Instances5ToByteString
classclass ToLazyByteString a where
#

Methods

Instances5ToLazyByteString
classclass ToString a where
#

Methods

Instances5ToString
  • ToString ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToString ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToString StringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToString TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToString TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
classclass ToText a where
#

Methods

Instances5ToText
  • ToText ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToText ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToText StringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToText TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToText TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
datadata PerformGC
#

Should we perform a GC call before counting the size?

Constructors

  • FirstPerformGC

    Yes, first perform GC before counting

    This should be used for most accurate results. Without calling GC first, the computed size might be larger than expected due to leftover indirections (black holes, selector thunks, etc.)

  • DontPerformGC

    No, do not perform GC before counting

    If pinpoint accuracy is not requried, then GC can be skipped, making the call much less expensive.

classclass Print a where
#

Methods

Instances5Print
  • Print ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
  • Print ByteStringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
  • Print TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
  • Print TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
  • Print [Char]Defined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
datadata Map k a
#

A Map from keys k to values a.

Instances56Bifoldable, Eq2, Ord2, Show2, NFData2, Hashable2, …
newtypenewtype Seq a
#

General-purpose finite sequences.

Instances57Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
  • Monad SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Functor SeqDefined in containers-0.8 · Data.Sequence.Internal
  • MonadFix SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Applicative SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Foldable SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Traversable SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Alternative SeqDefined in containers-0.8 · Data.Sequence.Internal
  • MonadPlus SeqDefined in containers-0.8 · Data.Sequence.Internal
  • MonadZip SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Eq1 SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Ord1 SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Read1 SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Show1 SeqDefined in containers-0.8 · Data.Sequence.Internal
  • NFData1 SeqDefined in containers-0.8 · Data.Sequence.Internal
  • UnzipWith SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Arbitrary1 SeqDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Hashable1 SeqDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • Alt SeqDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Apply SeqDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind SeqDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Extend SeqDefined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Plus SeqDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Align SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • Semialign SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • Crosswalk SeqDefined in semialign-1.4 · Data.Crosswalk
  • Unzip SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • Zip SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • Filterable SeqDefined in witherable-0.5 · Witherable
  • Witherable SeqDefined in witherable-0.5 · Witherable
  • FromJSON1 SeqDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON1 SeqDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • FoldableWithIndex Int SeqDefined in indexed-traversable-0.1.5 · WithIndex
  • FunctorWithIndex Int SeqDefined in indexed-traversable-0.1.5 · WithIndex

    The position in the Seq is available as the index.

  • TraversableWithIndex Int SeqDefined in indexed-traversable-0.1.5 · WithIndex
  • SemialignWithIndex Int SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • ZipWithIndex Int SeqDefined in semialign-1.4 · Data.Semialign.Internal
  • FilterableWithIndex Int SeqDefined in witherable-0.5 · Witherable
  • WitherableWithIndex Int SeqDefined in witherable-0.5 · Witherable
  • Lift a => Lift (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • IsList (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Eq a => Eq (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Data a => Data (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Ord a => Ord (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Read a => Read (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Show a => Show (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • a ~ Char => IsString (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Semigroup (Seq a)Defined in containers-0.8 · Data.Sequence.Internal

    (<>) = (><)

  • Monoid (Seq a)Defined in containers-0.8 · Data.Sequence.Internal

    mempty = empty

  • NFData a => NFData (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Binary e => Binary (Seq e)Defined in binary-0.8.9.3 · Data.Binary.Class
  • Arbitrary a => Arbitrary (Seq a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary

    WARNING: The same warning as for Arbitrary (Set a) applies here.

  • CoArbitrary a => CoArbitrary (Seq a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => Function (Seq a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable v => Hashable (Seq v)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • FromJSON a => FromJSON (Seq a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON a => ToJSON (Seq a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • type Item (Seq a) = aDefined in containers-0.8 · Data.Sequence.Internal
datadata Set a
#

A set of values a.

Instances25Foldable, Eq1, Ord1, Show1, NFData1, Hashable1, …
  • Foldable SetDefined in containers-0.8 · Data.Set.Internal

    Folds in order of increasing key.

  • Eq1 SetDefined in containers-0.8 · Data.Set.Internal
  • Ord1 SetDefined in containers-0.8 · Data.Set.Internal
  • Show1 SetDefined in containers-0.8 · Data.Set.Internal
  • NFData1 SetDefined in containers-0.8 · Data.Set.Internal
  • Hashable1 SetDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • ToJSON1 SetDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Lift a => Lift (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => IsList (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Eq a => Eq (Set a)Defined in containers-0.8 · Data.Set.Internal
  • (Data a, Ord a) => Data (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => Ord (Set a)Defined in containers-0.8 · Data.Set.Internal
  • (Read a, Ord a) => Read (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Show a => Show (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => Semigroup (Set a)Defined in containers-0.8 · Data.Set.Internal

    (<>) = union

  • Ord a => Monoid (Set a)Defined in containers-0.8 · Data.Set.Internal

    mempty = empty

  • NFData a => NFData (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Binary a => Binary (Set a)Defined in binary-0.8.9.3 · Data.Binary.Class
  • (Ord a, Arbitrary a) => Arbitrary (Set a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary

    WARNING: Users working on the internals of the Set type via e.g. Data.Set.Internal should be aware that this instance aims to give a good representation of Set a as mathematical sets but *does not* aim to provide a varied distribution over the underlying representation.

  • CoArbitrary a => CoArbitrary (Set a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • (Ord a, Function a) => Function (Set a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable v => Hashable (Set v)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • (Ord a, FromJSON a) => FromJSON (Set a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON a => ToJSON (Set a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • type Item (Set a) = aDefined in containers-0.8 · Data.Set.Internal
classclass NFData a where
#

A class of types that can be fully evaluated.

Methods

  • rnf :: a -> ()

    rnf should reduce its argument to normal form (that is, fully evaluate all sub-components), and then return ().

    Generic NFData deriving

    Starting with GHC 7.2, you can automatically derive instances for types possessing a Generic instance.

    Note: Generic1 can be auto-derived starting with GHC 7.4

    {-# LANGUAGE DeriveGeneric #-}
    
    import GHC.Generics (Generic, Generic1)
    import Control.DeepSeq
    
    data Foo a = Foo a String
                 deriving (Eq, Generic, Generic1)
    
    instance NFData a => NFData (Foo a)
    instance NFData1 Foo
    
    data Colour = Red | Green | Blue
                  deriving Generic
    
    instance NFData Colour

    Starting with GHC 7.10, the example above can be written more concisely by enabling the new DeriveAnyClass extension:

    {-# LANGUAGE DeriveGeneric, DeriveAnyClass #-}
    
    import GHC.Generics (Generic)
    import Control.DeepSeq
    
    data Foo a = Foo a String
                 deriving (Eq, Generic, Generic1, NFData, NFData1)
    
    data Colour = Red | Green | Blue
                  deriving (Generic, NFData)
    
    Compatibility with previous deepseq versions

    Prior to version 1.4.0.0, the default implementation of the rnf method was defined as

    rnf a = seq a ()

    However, starting with deepseq-1.4.0.0, the default implementation is based on DefaultSignatures allowing for more accurate auto-derived NFData instances. If you need the previously used exact default rnf method implementation semantics, use

    instance NFData Colour where rnf x = seq x ()

    or alternatively

    instance NFData Colour where rnf = rwhnf

    or

    {-# LANGUAGE BangPatterns #-}
    instance NFData Colour where rnf !_ = ()
Instances206NFData, …
classclass Applicative f => Alternative (f :: Type -> Type) where
#

A monoid on applicative functors.

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

Examples
Example1 expression
Nothing <|> Just 42Just 42
Example1 expression
[1, 2] <|> [3, 4][1,2,3,4]
Example1 expression
empty <|> print (2^15)32768

Methods

  • empty :: f a

    The identity of <|>

    empty <|> a     == a
    a     <|> empty == a
  • (<|>) :: f a -> f a -> f ainfixl 3

    An associative binary operation

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

    One or more.

    Examples
    Example1 expression
    some (putStr "la")lalalalalalalalala... * goes on forever *
    Example1 expression
    some Nothingnothing
    Example1 expression
    take 5 <$> some (Just 1)* hangs forever *

    Note that this function can be used with Parsers based on Applicatives. In that case some parser will attempt to parse parser one or more times until it fails.

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

    Zero or more.

    Examples
    Example1 expression
    many (putStr "la")lalalalalalalalala... * goes on forever *
    Example1 expression
    many NothingJust []
    Example1 expression
    take 5 <$> many (Just 1)* hangs forever *

    Note that this function can be used with Parsers based on Applicatives. In that case many parser will attempt to parse parser zero or more times until it fails.

Instances56Alternative, …
classclass Functor f => Applicative (f :: Type -> Type) where
#

A functor with application, providing operations to

  • embed pure expressions (pure), and

  • sequence computations and combine their results (<*> and liftA2).

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

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

Further, any definition must satisfy the following:

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

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

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

It may be useful to note that supposing

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

it follows from the above that

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

If f is also a Monad, it should satisfy

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

Methods

  • pure :: a -> f a

    Lift a value into the Structure.

    Examples
    Example1 expression
    pure 1 :: Maybe IntJust 1
    Example1 expression
    pure 'z' :: [Char]"z"
    Example1 expression
    pure (pure ":D") :: Maybe [String]Just [":D"]
  • (<*>) :: f (a -> b) -> f a -> f binfixl 4

    Sequential application.

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

    Example

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

    Example1 expression
    data MyState = MyState {arg1 :: Foo, arg2 :: Bar, arg3 :: Baz}
    Example3 expressions
    produceFoo :: Applicative f => f FooproduceBar :: Applicative f => f BarproduceBaz :: Applicative f => f Baz
    Example2 expressions
    mkState :: Applicative f => f MyStatemkState = MyState <$> produceFoo <*> produceBar <*> produceBaz
  • liftA2 :: (a -> b -> c) -> f a -> f b -> f c

    Lift a binary function to actions.

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

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

    Example
    Example1 expression
    liftA2 (,) (Just 3) (Just 5)Just (3,5)
    Example1 expression
    liftA2 (+) [1, 2, 3] [4, 5, 6][5,6,7,6,7,8,7,8,9]
  • (*>) :: f a -> f b -> f binfixl 4

    Sequence actions, discarding the value of the first argument.

    Examples

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

    Example1 expression
    Just 2 *> Just 3Just 3
    Example1 expression
    Nothing *> Just 3Nothing

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

    Example4 expressions
    import Data.Charimport GHC.Internal.Text.ParserCombinators.ReadPlet p = string "my name is " *> munch1 isAlpha <* eofreadP_to_S p "my name is Simon"[("Simon","")]
  • (<*) :: f a -> f b -> f ainfixl 4

    Sequence actions, discarding the value of the second argument.

Instances127Applicative, …
classclass Functor (f :: Type -> Type) where
#

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

Identity

fmap id == id

Composition

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

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

Methods

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

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

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

    Examples

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

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

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

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

    Double each element of a list:

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

    Apply even to the second element of a pair:

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

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

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

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

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

    Examples

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

    Example2 expressions
    'a' <$ Just 2Just 'a''a' <$ NothingNothing
Instances215Functor, …
classclass 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

return a >>= k = k a

Right identity

m >>= return = m

Associativity

m >>= (\x -> k x >>= h) = (m >>= k) >>= h

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

The above laws imply:

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

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

Methods

  • (>>=) :: m a -> (a -> m b) -> m binfixl 1

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

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

    do a <- as
       bs a
    

    An alternative name for this function is 'bind', but some people may refer to it as 'flatMap', which results from it being equivalent to

    \x f -> join (fmap f x) :: Monad m => m a -> (a -> m b) -> m b

    which can be seen as mapping a value with Monad m => m a -> m (m b) and then 'flattening' m (m b) to m b using join.

  • (>>) :: m a -> m b -> m binfixl 1

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

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

    do as
       bs
    

    or in terms of (>>=) as

    as >>= const bs
  • return :: a -> m a

    Inject a value into the monadic type. This function should not be different from its default implementation as pure. The justification for the existence of this function is merely historic.

Instances100Monad, …
  • Monad GenDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Gen
  • Monad RoseDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Property
  • Monad IResultDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monad ParserDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monad ResultDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monad ComplexDefined in base-4.22.0.0 · Data.Complex
  • Monad FirstDefined in base-4.22.0.0 · Data.Semigroup
  • Monad LastDefined in base-4.22.0.0 · Data.Semigroup
  • Monad MaxDefined in base-4.22.0.0 · Data.Semigroup
  • Monad MinDefined in base-4.22.0.0 · Data.Semigroup
  • Monad GetDefined in binary-0.8.9.3 · Data.Binary.Get.Internal
  • Monad PutMDefined in binary-0.8.9.3 · Data.Binary.Put
  • Monad PutDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.Internal
  • Monad PPDefined in cborg-0.2.10.0 · Codec.CBOR.Pretty
  • Monad SeqDefined in containers-0.8 · Data.Sequence.Internal
  • Monad TreeDefined in containers-0.8 · Data.Tree
  • Monad DNonEmptyDefined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Monad DListDefined in dlist-1.0 · Data.DList.Internal
  • Monad PprMDefined in ghc-boot-th-9.14.1 · GHC.Boot.TH.PprLib
  • Monad NonEmptyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.NonEmpty · orphan
  • Monad STMDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Monad IdentityDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Monad FirstDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Monad LastDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Monad DownDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Monad DualDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monad ProductDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monad SumDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monad NoIODefined in ghc-internal-9.1401.0 · GHC.Internal.GHCi
  • Monad Par1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monad MaybeDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monad QDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Monad PDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.ParserCombinators.ReadP
  • Monad ReadPDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.ParserCombinators.ReadP
  • Monad ReadPrecDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.ParserCombinators.ReadPrec
  • Monad SoloDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monad IODefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monad ArrayDefined in primitive-0.9.1.0 · Data.Primitive.Array
  • Monad SmallArrayDefined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Monad STMDefined in stm-2.5.3.1 · Control.Sequential.STM
  • Monad VectorDefined in vector-0.13.2.0 · Data.Vector
  • Monad IdDefined in vector-0.13.2.0 · Data.Vector.Fusion.Util
  • Monad VectorDefined in vector-0.13.2.0 · Data.Vector.Strict
  • Monad BoxDefined in vector-stream-0.1.0.1 · Data.Stream.Monadic
  • Monad []Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monad ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Monad U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monad (Decoder s)Defined in cborg-0.2.10.0 · Codec.CBOR.Decoding
  • Monad (IncrementalDecoder s)Defined in cborg-0.2.10.0 · Codec.CBOR.Read
  • Monad (State s)Defined in containers-0.8 · Utils.Containers.Internal.State
  • Monad (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.ST.Lazy.Imp
  • Monad (Either e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • Monad (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.ST
  • Monad (IParser t)Defined in text-2.1.3 · Data.Text.Internal.Read
  • Monad m => Monad (PropertyM m)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Monadic
  • Monad m => Monad (WrappedMonad m)Defined in base-4.22.0.0 · Control.Applicative
  • Monad m => Monad (CatchT m)Defined in exceptions-0.10.11 · Control.Monad.Catch.Pure
  • Monad m => Monad (QuoteToQuasi m)Defined in th-compat-0.1.7 · Language.Haskell.TH.Syntax.Compat
  • Monad m => Monad (MaybeT m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • Monoid a => Monad (Tuple2 a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup a => Monad (These a)Defined in strict-0.5.1 · Data.Strict.These
  • Semigroup a => Monad (These a)Defined in these-1.2.1 · Data.These
  • ArrowApply a => Monad (ArrowMonad a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Arrow
  • Monad (Tagged s)Defined in tagged-0.8.11 · Data.Tagged
  • Monad (bi a) => Monad (Biap bi a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Monad (t m) => Monad (LiftingAccum t m)Defined in mtl-2.3.1 · Control.Monad.Accum
  • Monad (t m) => Monad (LiftingSelect t m)Defined in mtl-2.3.1 · Control.Monad.Select
  • Monad f => Monad (Ap f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Monad f => Monad (Alt f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monad f => Monad (Rec1 f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monad m => Monad (Kleisli m a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Arrow
  • Monad m => Monad (StateT s m)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Utils
  • Monad m => Monad (StateT s m)Defined in microlens-0.4.14.0 · Lens.Micro
  • Monad m => Monad (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • Monad m => Monad (IdentityT m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • Monad m => Monad (ReaderT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Reader
  • Monad m => Monad (SelectT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Select
  • Monad m => Monad (StateT s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.Lazy
  • Monad m => Monad (StateT s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.Strict
  • Monad m => Monad (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.CPS
  • Monad m => Monad (Reverse m)Defined in transformers-0.6.1.2 · Data.Functor.Reverse

    Derived instance.

  • (Applicative f, Monad f) => Monad (WhenMissing f x)Defined in containers-0.8 · Data.IntMap.Internal

    Equivalent to ReaderT k (ReaderT x (MaybeT f)).

  • (Monoid a, Monoid b) => Monad (Tuple3 a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Monoid w, Functor m, Monad m) => Monad (AccumT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Accum
  • (Monoid w, Monad m) => Monad (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • (Monoid w, Monad m) => Monad (WriterT w m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • Monad (Cokleisli w a)Defined in comonad-5.0.10 · Control.Comonad
  • Monad (ParsecT s u m)Defined in parsec-3.1.18.0 · Text.Parsec.Prim
  • Monad (ContT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Cont
  • Monad ((->) r)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Applicative f, Monad f) => Monad (WhenMissing f k x)Defined in containers-0.8 · Data.Map.Internal

    Equivalent to ReaderT k (ReaderT x (MaybeT f)) .

  • (Monad f, Applicative f) => Monad (WhenMatched f x y)Defined in containers-0.8 · Data.IntMap.Internal

    Equivalent to ReaderT Key (ReaderT x (ReaderT y (MaybeT f)))

  • (Monad f, Monad g) => Monad (Product f g)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Monad f, Monad g) => Monad (f :*: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Monoid a, Monoid b, Monoid c) => Monad (Tuple4 a b c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monad f => Monad (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monad m => Monad (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.CPS
  • (Monad f, Applicative f) => Monad (WhenMatched f k x y)Defined in containers-0.8 · Data.Map.Internal

    Equivalent to ReaderT k (ReaderT x (ReaderT y (MaybeT f)))

  • (Monoid w, Monad m) => Monad (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.Lazy
  • (Monoid w, Monad m) => Monad (RWST r w s m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.Strict
classclass (Alternative m, Monad m) => MonadPlus (m :: Type -> Type) where
#

Monads that also support choice and failure.

Methods

  • mzero :: m a

    The identity of mplus. It should also satisfy the equations

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

    The default definition is

    mzero = empty
    
  • mplus :: m a -> m a -> m a

    An associative operation. The default definition is

    mplus = (<|>)
    
Instances45MonadPlus, …
classclass 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) <> z

(

Semigroup

law)

Concatenation

mconcat = foldr (<>) mempty

You can alternatively define mconcat instead of mempty, in which case the laws are:

Unit

mconcat (pure x) = x

Multiplication

mconcat (join xss) = mconcat (fmap mconcat xss)

Subclass

mconcat (toList xs) = sconcat xs

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. Data.Semigroup.Sum and Data.Semigroup.Product.

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

Methods

  • mempty :: a

    Identity of mappend

    Examples
    Example1 expression
    "Hello world" <> mempty"Hello world"
    Example1 expression
    mempty <> [1, 2, 3][1,2,3]
  • mappend :: a -> a -> a

    An associative operation

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

  • mconcat :: [a] -> a

    Fold a list using the monoid.

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

    Example1 expression
    mconcat ["Hello", " ", "Haskell", "!"]"Hello Haskell!"
Instances120Monoid, …
  • Monoid EveryDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Monoids
  • Monoid SomeDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Monoids
  • Monoid SeriesDefined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • Monoid KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Monoid ByteArrayDefined in base-4.22.0.0 · Data.Array.Byte
  • Monoid BuilderDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.Internal
  • Monoid ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Monoid ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Monoid ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Monoid JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Monoid StrictUnitDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Strict
  • Monoid EncodingDefined in cborg-0.2.10.0 · Codec.CBOR.Encoding
  • Monoid IntSetDefined in containers-0.8 · Data.IntSet.Internal

    mempty = empty

  • Monoid UnitDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Monoid AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Monoid EventLifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Monoid LifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types

    mappend takes the longer of two lifetimes.

  • Monoid ExceptionContextDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Context
  • Monoid OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    "String-Concatenation" for OsString. This is not the same as (</>).

  • Monoid PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Monoid WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Monoid DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Monoid TextDefined in text-2.1.3 · Data.Text · orphan
  • Monoid BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Monoid TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Monoid StrictTextBuilderDefined in text-2.1.3 · Data.Text.Internal.StrictBuilder
  • Monoid ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Monoid CalendarDiffDaysDefined in time-1.15 · Data.Time.Calendar.CalendarDiffDays

    Additive

  • Monoid CalendarDiffTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.CalendarDiffTime

    Additive

  • Monoid StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Monoid StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Monoid ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Monoid (IResult a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monoid (Parser a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monoid (Result a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Monoid (Comparison a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    mempty :: Comparison a
    mempty = Comparison _ _ -> EQ
    
  • Monoid (Equivalence a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    mempty :: Equivalence a
    mempty = Equivalence _ _ -> True
    
  • Monoid (Predicate a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    mempty :: Predicate a
    mempty = _ -> True
    
  • Monoid (PutM ())Defined in binary-0.8.9.3 · Data.Binary.Put
  • Monoid (IntMap a)Defined in containers-0.8 · Data.IntMap.Internal

    mempty = empty

  • Monoid (Seq a)Defined in containers-0.8 · Data.Sequence.Internal

    mempty = empty

  • Monoid (MergeSet a)Defined in containers-0.8 · Data.Set.Internal
  • Monoid (EqM a)Defined in containers-0.8 · Utils.Containers.Internal.EqOrdUtil
  • Monoid (OrdM a)Defined in containers-0.8 · Utils.Containers.Internal.EqOrdUtil
  • Monoid (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Monoid (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Monoid (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Monoid (Endo a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Monoid (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Monoid (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray
  • Monoid (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Monoid (Validity k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Monoid (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Monoid (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Monoid [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid a => Monoid (STM a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Monoid a => Monoid (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Monoid a => Monoid (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Monoid a => Monoid (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid a => Monoid (Q a)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Monoid a => Monoid (IO a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid a => Monoid (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid m => Monoid (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Monoid p => Monoid (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup a => Monoid (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base

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

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

  • Semigroup a => Monoid (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Bits a => Monoid (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Monoid (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => Monoid (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • FiniteBits a => Monoid (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • Ord a => Monoid (Set a)Defined in containers-0.8 · Data.Set.Internal

    mempty = empty

  • Ord a => Monoid (Max a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Utils
  • Ord a => Monoid (Min a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Utils
  • Storable a => Monoid (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • Num a => Monoid (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Num a => Monoid (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Hashable a => Monoid (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal

    mempty = empty

    mappend = union

    O(n+m)

    To obtain good performance, the smaller set must be presented as the first argument.

    Examples
    Example1 expression
    mappend (fromList [1,2]) (fromList [2,3])fromList [1,2,3]
  • Prim a => Monoid (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • Unbox a => Monoid (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • (Semigroup a, Monoid a) => Monoid (Concurrently a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • (Ord a, Bounded a) => Monoid (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • (Ord a, Bounded a) => Monoid (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • (Generic a, Monoid (Rep a ())) => Monoid (Generically a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Applicative f => Monoid (Traversed a f)Defined in microlens-0.4.14.0 · Lens.Micro
  • Monoid (Format r (a -> r))Defined in formatting-7.2.0 · Formatting.Internal

    Useful instance for applying two formatters to the same input argument. For example: format (year <> "/" % month) now will yield "2015/01".

  • Monoid (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Monoid (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid a => Monoid (Op a b)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    mempty :: Op a b
    mempty = Op _ -> mempty
    
  • Monoid a => Monoid (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ST
  • Monoid b => Monoid (a -> b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Ord k => Monoid (Map k v)Defined in containers-0.8 · Data.Map.Internal

    mempty = empty

  • Hashable k => Monoid (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal

    mempty = empty

    mappend = union

    If a key occurs in both maps, the mapping from the first will be the mapping in the result.

    Examples
    Example1 expression
    mappend (fromList [(1,'a'),(2,'b')]) (fromList [(2,'c'),(3,'d')])fromList [(1,'a'),(2,'b'),(3,'d')]
  • (Monoid a, Monoid b) => Monoid (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Monoid a, Monoid b) => Monoid (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Semigroup a, Monoid a) => Monoid (ConcurrentlyE e a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • (Repeat f, Monoid a) => Monoid (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • Alternative f => Monoid (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Applicative f => Monoid (Traversed a f)Defined in indexed-traversable-0.1.5 · WithIndex
  • Monad m => Monoid (Sequenced a m)Defined in indexed-traversable-0.1.5 · WithIndex
  • Monoid (f p) => Monoid (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid a => Monoid (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Monoid a => Monoid (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • (Biapplicative bi, Monoid a, Monoid b) => Monoid (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • (Applicative f, Monoid a) => Monoid (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • (Monoid a, Monoid b, Monoid c) => Monoid (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Semigroup a, Monoid a) => Monoid (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Monoid c => Monoid (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Monoid (f a), Monoid (g a)) => Monoid (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Monoid (f p), Monoid (g p)) => Monoid ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Monoid a, Monoid b, Monoid c, Monoid d) => Monoid (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Monoid a, Semigroup (ParsecT s u m a)) => Monoid (ParsecT s u m a)Defined in parsec-3.1.18.0 · Text.Parsec.Prim

    The Monoid instance for ParsecT is used for the same purposes as the Semigroup instance.

  • Monoid (f (g a)) => Monoid (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Monoid (f (g p)) => Monoid ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid (f p) => Monoid (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Monoid a, Monoid b, Monoid c, Monoid d, Monoid e) => Monoid (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
datadata NonEmpty a
#

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

Constructors

  • a :| [a]infixr 5
Instances60Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
classclass Semigroup a where
#

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

Instances should satisfy the following:

Associativity

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

You can alternatively define sconcat instead of (<>), in which case the laws are:

Unit

sconcat (pure x) = x

Multiplication

sconcat (join xss) = sconcat (fmap sconcat xss)

Methods

  • (<>) :: a -> a -> ainfixr 6

    An associative operation.

    Examples
    Example1 expression
    [1,2,3] <> [4,5,6][1,2,3,4,5,6]
    Example1 expression
    Just [1, 2, 3] <> Just [4, 5, 6]Just [1,2,3,4,5,6]
    Example1 expression
    putStr "Hello, " <> putStrLn "World!"Hello, World!
  • sconcat :: NonEmpty a -> a

    Reduce a non-empty list with <>

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

    Examples

    For the following examples, we will assume that we have:

    Example1 expression
    import Data.List.NonEmpty (NonEmpty (..))
    Example1 expression
    sconcat $ "Hello" :| [" ", "Haskell", "!"]"Hello Haskell!"
    Example1 expression
    sconcat $ Just [1, 2, 3] :| [Nothing, Just [4, 5, 6]]Just [1,2,3,4,5,6]
    Example1 expression
    sconcat $ Left 1 :| [Right 2, Left 3, Right 4]Right 2
  • stimes :: Integral b => b -> a -> a

    Repeat a value n times.

    The default definition will raise an exception for a multiplier that is <= 0. This may be overridden with an implementation that is total. For monoids it is preferred to use stimesMonoid.

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

    Examples
    Example1 expression
    stimes 4 [1][1,1,1,1]
    Example1 expression
    stimes 5 (putStr "hi!")hi!hi!hi!hi!hi!
    Example1 expression
    stimes 3 (Right ":)")Right ":)"
Instances140Semigroup, …
  • Semigroup EveryDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Monoids
  • Semigroup SomeDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Monoids
  • Semigroup SeriesDefined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • Semigroup KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Semigroup ByteArrayDefined in base-4.22.0.0 · Data.Array.Byte
  • Semigroup BuilderDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.Internal
  • Semigroup ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Semigroup ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Semigroup ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Semigroup JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Semigroup StrictUnitDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Strict
  • Semigroup EncodingDefined in cborg-0.2.10.0 · Codec.CBOR.Encoding
  • Semigroup IntSetDefined in containers-0.8 · Data.IntSet.Internal

    (<>) = union

  • Semigroup IntersectionDefined in containers-0.8 · Data.IntSet.Internal
  • Semigroup UnitDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Semigroup VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Semigroup EventLifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Semigroup LifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Semigroup ExceptionContextDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Context
  • Semigroup OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Semigroup PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Semigroup WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Semigroup DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Semigroup TextDefined in text-2.1.3 · Data.Text · orphan

    Beware: stimes will crash if the given number does not fit into an Int.

  • Semigroup BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Semigroup TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Semigroup StrictTextBuilderDefined in text-2.1.3 · Data.Text.Internal.StrictBuilder

    Concatenation of StrictBuilder is right-biased: the right builder will be run first. This allows a builder to run tail-recursively when it was accumulated left-to-right.

  • Semigroup ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Semigroup CalendarDiffDaysDefined in time-1.15 · Data.Time.Calendar.CalendarDiffDays

    Additive

  • Semigroup CalendarDiffTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.CalendarDiffTime

    Additive

  • Semigroup StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common

    ORs the flags.

  • Semigroup StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common

    ORs the masks.

  • Semigroup ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Monoid m => Semigroup (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Semigroup (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Semigroup (IResult a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Semigroup (Parser a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Semigroup (Result a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Semigroup (FromMaybe b)Defined in base-4.22.0.0 · Data.Foldable1
  • Semigroup (NonEmptyDList a)Defined in base-4.22.0.0 · Data.Foldable1
  • Semigroup (Comparison a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    (<>) :: Comparison a -> Comparison a -> Comparison a
    Comparison cmp <> Comparison cmp' = Comparison a a' ->
      cmp a a' <> cmp a a'
    
  • Semigroup (Equivalence a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    (<>) :: Equivalence a -> Equivalence a -> Equivalence a
    Equivalence equiv <> Equivalence equiv' = Equivalence a b ->
      equiv a b && equiv' a b
    
  • Semigroup (Predicate a)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    (<>) :: Predicate a -> Predicate a -> Predicate a
    Predicate pred <> Predicate pred' = Predicate a ->
      pred a && pred' a
    
  • Semigroup (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Semigroup (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Semigroup (PutM ())Defined in binary-0.8.9.3 · Data.Binary.Put
  • Semigroup (IntMap a)Defined in containers-0.8 · Data.IntMap.Internal

    (<>) = union

  • Semigroup (Seq a)Defined in containers-0.8 · Data.Sequence.Internal

    (<>) = (><)

  • Semigroup (MergeSet a)Defined in containers-0.8 · Data.Set.Internal
  • Semigroup (EqM a)Defined in containers-0.8 · Utils.Containers.Internal.EqOrdUtil

    Composes left-to-right, short-circuits on False

  • Semigroup (OrdM a)Defined in containers-0.8 · Utils.Containers.Internal.EqOrdUtil

    Composes left-to-right, short-circuits on non-EQ

  • Semigroup (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Semigroup (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Semigroup (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.NonEmpty · orphan
  • Semigroup (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Semigroup (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Semigroup (Endo a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup (FromMaybe b)Defined in indexed-traversable-0.1.5 · WithIndex
  • Semigroup (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Semigroup (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Semigroup (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray
  • Semigroup (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Semigroup (Validity k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Semigroup (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Semigroup (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Semigroup [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup a => Semigroup (Concurrently a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal

    Only defined by async for base >= 4.9

  • Semigroup a => Semigroup (JoinWith a)Defined in base-4.22.0.0 · Data.Foldable1
  • Semigroup a => Semigroup (STM a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Semigroup a => Semigroup (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Semigroup a => Semigroup (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Semigroup a => Semigroup (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup a => Semigroup (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup a => Semigroup (Q a)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Semigroup a => Semigroup (IO a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup a => Semigroup (JoinWith a)Defined in semigroupoids-6.0.2 · Data.Semigroup.Foldable
  • Semigroup a => Semigroup (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Semigroup a => Semigroup (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup p => Semigroup (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Bits a => Semigroup (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Semigroup (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Semigroup (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => Semigroup (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • Ord a => Semigroup (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Semigroup (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Semigroup (Intersection a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => Semigroup (Set a)Defined in containers-0.8 · Data.Set.Internal

    (<>) = union

  • Ord a => Semigroup (Max a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Utils
  • Ord a => Semigroup (Min a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Utils
  • Storable a => Semigroup (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • Num a => Semigroup (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Num a => Semigroup (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Hashable a => Semigroup (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal

    <> = union

    O(n+m)

    To obtain good performance, the smaller set must be presented as the first argument.

    Examples
    Example1 expression
    fromList [1,2] <> fromList [2,3]fromList [1,2,3]
  • Prim a => Semigroup (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • Unbox a => Semigroup (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • (Generic a, Semigroup (Rep a ())) => Semigroup (Generically a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Applicative f => Semigroup (Traversed a f)Defined in microlens-0.4.14.0 · Lens.Micro
  • Semigroup (Format r (a -> r))Defined in formatting-7.2.0 · Formatting.Internal
  • Semigroup (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • Semigroup (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Semigroup (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • Semigroup a => Semigroup (ConcurrentlyE e a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal

    Either the combination of the successful results, or the first failure.

  • Semigroup a => Semigroup (Op a b)Defined in base-4.22.0.0 · Data.Functor.Contravariant

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

    (<>) :: Op a b -> Op a b -> Op a b
    Op f <> Op g = Op a -> f a <> g a
    
  • Semigroup a => Semigroup (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ST
  • Semigroup b => Semigroup (a -> b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Ord k => Semigroup (Map k v)Defined in containers-0.8 · Data.Map.Internal

    (<>) = union

  • Hashable k => Semigroup (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal

    <> = union

    If a key occurs in both maps, the mapping from the first will be the mapping in the result.

    Examples
    Example1 expression
    fromList [(1,'a'),(2,'b')] <> fromList [(2,'c'),(3,'d')]fromList [(1,'a'),(2,'b'),(3,'d')]
  • Alt f => Semigroup (Alt_ f a)Defined in semigroupoids-6.0.2 · Data.Semigroup.Foldable
  • Apply f => Semigroup (Act f a)Defined in semigroupoids-6.0.2 · Data.Semigroup.Bifoldable
  • Apply f => Semigroup (Act f a)Defined in semigroupoids-6.0.2 · Data.Semigroup.Foldable
  • (Semigroup a, Semigroup b) => Semigroup (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • (Semigroup a, Semigroup b) => Semigroup (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Semigroup a, Semigroup b) => Semigroup (These a b)Defined in these-1.2.1 · Data.These
  • (Semigroup a, Semigroup b) => Semigroup (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • (Zip f, Semigroup a) => Semigroup (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • Alternative f => Semigroup (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Applicative f => Semigroup (Traversed a f)Defined in indexed-traversable-0.1.5 · WithIndex
  • Monad m => Semigroup (Sequenced a m)Defined in indexed-traversable-0.1.5 · WithIndex
  • Semigroup (f p) => Semigroup (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup a => Semigroup (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Semigroup a => Semigroup (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Semigroup a => Semigroup (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • (Biapplicative bi, Semigroup a, Semigroup b) => Semigroup (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • (Applicative f, Semigroup a) => Semigroup (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • (Semigroup a, Semigroup b, Semigroup c) => Semigroup (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup a => Semigroup (ParsecT s u m a)Defined in parsec-3.1.18.0 · Text.Parsec.Prim

    The Semigroup instance for ParsecT is used to append the result of several parsers, for example:

    (many $ char a) <> (many $ char b)
    

    The above will parse a string like "aabbb" and return a successful parse result "aabbb". Compare against the below which will produce a result of "bbb" for the same input:

    (many $ char a) >> (many $ char b)
    (many $ char a) *> (many $ char b)
    
  • Semigroup c => Semigroup (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Semigroup (f a), Semigroup (g a)) => Semigroup (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Semigroup (f p), Semigroup (g p)) => Semigroup ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Semigroup a, Semigroup b, Semigroup c, Semigroup d) => Semigroup (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Semigroup (f (g a)) => Semigroup (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Semigroup (f (g p)) => Semigroup ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (f p) => Semigroup (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Semigroup a, Semigroup b, Semigroup c, Semigroup d, Semigroup e) => Semigroup (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
datadata Void
#

Uninhabited data type

Instances43Eq, Data, Ord, Read, Show, Ix, …
classclass Eq a => Bits a where
#

The Bits class defines bitwise operations over integral types.

  • Bits are numbered from 0 with bit 0 being the least significant bit.

Methods

  • (.&.) :: a -> a -> ainfixl 7

    Bitwise "and"

  • (.|.) :: a -> a -> ainfixl 5

    Bitwise "or"

  • xor :: a -> a -> ainfixl 6

    Bitwise "xor"

  • complement :: a -> a

    Reverse all the bits in the argument

  • shift :: a -> Int -> ainfixl 8

    shift x i shifts x left by i bits if i is positive, or right by -i bits otherwise. Right shifts perform sign extension on signed number types; i.e. they fill the top bits with 1 if the x is negative and with 0 otherwise.

    An instance can define either this unified shift or shiftL and shiftR, depending on which is more convenient for the type in question.

  • rotate :: a -> Int -> ainfixl 8

    rotate x i rotates x left by i bits if i is positive, or right by -i bits otherwise.

    For unbounded types like Integer, rotate is equivalent to shift.

    An instance can define either this unified rotate or rotateL and rotateR, depending on which is more convenient for the type in question.

  • zeroBits :: a

    zeroBits is the value with all bits unset.

    The following laws ought to hold (for all valid bit indices n):

    This method uses clearBit (bit 0) 0 as its default implementation (which ought to be equivalent to zeroBits for types which possess a 0th bit).

  • bit :: Int -> a

    bit i is a value with the ith bit set and all other bits clear.

    Can be implemented using bitDefault if a is also an instance of Num.

    See also zeroBits.

  • setBit :: a -> Int -> a

    x `setBit` i is the same as x .|. bit i

  • clearBit :: a -> Int -> a

    x `clearBit` i is the same as x .&. complement (bit i)

  • complementBit :: a -> Int -> a

    x `complementBit` i is the same as x `xor` bit i

  • testBit :: a -> Int -> Bool

    x `testBit` i is the same as x .&. bit n /= 0

    In other words it returns True if the bit at offset @n is set.

    Can be implemented using testBitDefault if a is also an instance of Num.

  • bitSizeMaybe :: a -> Maybe Int

    Return the number of bits in the type of the argument. The actual value of the argument is ignored. Returns Nothing for types that do not have a fixed bitsize, like Integer.

  • bitSize :: a -> Int

    Return the number of bits in the type of the argument. The actual value of the argument is ignored. The function bitSize is undefined for types that do not have a fixed bitsize, like Integer.

    Default implementation based upon bitSizeMaybe provided since 4.12.0.0.

  • isSigned :: a -> Bool

    Return True if the argument is a signed type. The actual value of the argument is ignored

  • shiftL :: a -> Int -> ainfixl 8

    Shift the argument left by the specified number of bits (which must be non-negative). Some instances may throw an Overflow exception if given a negative input.

    An instance can define either this and shiftR or the unified shift, depending on which is more convenient for the type in question.

  • unsafeShiftL :: a -> Int -> a

    Shift the argument left by the specified number of bits. The result is undefined for negative shift amounts and shift amounts greater or equal to the bitSize.

    Defaults to shiftL unless defined explicitly by an instance.

  • shiftR :: a -> Int -> ainfixl 8

    Shift the first argument right by the specified number of bits. The result is undefined for negative shift amounts and shift amounts greater or equal to the bitSize. Some instances may throw an Overflow exception if given a negative input.

    Right shifts perform sign extension on signed number types; i.e. they fill the top bits with 1 if the x is negative and with 0 otherwise.

    An instance can define either this and shiftL or the unified shift, depending on which is more convenient for the type in question.

  • unsafeShiftR :: a -> Int -> a

    Shift the first argument right by the specified number of bits, which must be non-negative and smaller than the number of bits in the type.

    Right shifts perform sign extension on signed number types; i.e. they fill the top bits with 1 if the x is negative and with 0 otherwise.

    Defaults to shiftR unless defined explicitly by an instance.

  • rotateL :: a -> Int -> ainfixl 8

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

    An instance can define either this and rotateR or the unified rotate, depending on which is more convenient for the type in question.

  • rotateR :: a -> Int -> ainfixl 8

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

    An instance can define either this and rotateL or the unified rotate, depending on which is more convenient for the type in question.

  • popCount :: a -> Int

    Return the number of set bits in the argument. This number is known as the population count or the Hamming weight.

    Can be implemented using popCountDefault if a is also an instance of Num.

Instances70Bits, …
  • Bits Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Bits IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • Bits NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • Bits EventTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Bits EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Poll
  • Bits CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Bits IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Bits WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Bits Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Bits BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits

    Interpret Bool as 1-bit bit-field

  • Bits IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • Bits WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • Bits Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Bits StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Bits StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Bits a => Bits (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Bits a => Bits (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Bits a => Bits (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Bits a => Bits (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
classclass Bits b => FiniteBits b where
#

The FiniteBits class denotes types with a finite, fixed number of bits.

Methods

Instances65FiniteBits, …
classclass Eq a where
#

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, instances are encouraged to follow these properties:

Reflexivity

x == x

=

True

Symmetry

x == y

=

y == x

Transitivity

if

x == y && y == z

=

True

, then

x == z

=

True

Extensionality

if

x == y

=

True

and

f

is a function whose return type is an instance of

Eq

, then

f x == f y

=

True

Negation

x /= y

=

not (x == y)

Methods

Instances543Eq, …
  • Eq ShrunkDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Eq ASCIIStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq PrintableStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq UnicodeStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq ADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq BDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq CDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq OrdADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq OrdBDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq OrdCDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Eq LitDefined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • Eq NumberDefined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • Eq KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Eq ArityDefined in aeson-2.2.5.1 · Data.Aeson.TH
  • Eq FunArgDefined in aeson-2.2.5.1 · Data.Aeson.TH
  • Eq StarKindStatusDefined in aeson-2.2.5.1 · Data.Aeson.TH
  • Eq DotNetTimeDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq JSONPathElementDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq SumEncodingDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq AsyncCancelledDefined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Eq ByteArrayDefined in base-4.22.0.0 · Data.Array.Byte
  • Eq IoManagerFlagDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Eq TimeoutDefined in base-4.22.0.0 · System.Timeout
  • Eq BiFunDefined in bifunctors-5.6.3 · Data.Bifunctor.TH
  • Eq OptionsDefined in bifunctors-5.6.3 · Data.Bifunctor.TH
  • Eq StarKindStatusDefined in bifunctors-5.6.3 · Data.Bifunctor.TH.Internal
  • Eq FloatingDecimalDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.D2S
  • Eq FloatingDecimalDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.F2S
  • Eq ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Eq ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Eq ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Eq Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Eq JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Eq JSValueDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Eq CountFailureDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.GHC.Heap.Size
  • Eq SchemaErrorDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical
  • Eq ByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray
  • Eq SlicedByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray.Sliced
  • Eq TokenTypeDefined in cborg-0.2.10.0 · Codec.CBOR.Decoding
  • Eq TokensDefined in cborg-0.2.10.0 · Codec.CBOR.Encoding
  • Eq TermTokenDefined in cborg-0.2.10.0 · Codec.CBOR.FlatTerm
  • Eq DeserialiseFailureDefined in cborg-0.2.10.0 · Codec.CBOR.Read
  • Eq TermDefined in cborg-0.2.10.0 · Codec.CBOR.Term
  • Eq ClockDefined in clock-0.8.4 · System.Clock
  • Eq TimeSpecDefined in clock-0.8.4 · System.Clock
  • Eq SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Eq IntSetDefined in containers-0.8 · Data.IntSet.Internal
  • Eq IntersectionDefined in containers-0.8 · Data.IntSet.Internal
  • Eq PrefixDefined in containers-0.8 · Data.IntSet.Internal.IntTreeCommons
  • Eq FileTypeDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Eq PermissionsDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Eq XdgDirectoryDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Eq XdgDirectoryListDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Eq TimeoutDefined in extra-1.8 · System.Time.Extra
  • Eq VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Eq BigNatDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.BigNat
  • Eq IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Integer
  • Eq NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Natural
  • Eq ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Eq ClosureTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.ClosureTypes
  • Eq BlockReasonDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Eq ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Eq ThreadStatusDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Eq ConstrDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data

    Equality of constructors

  • Eq ConstrRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Eq DataRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Eq FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Eq AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq SomeTypeRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Eq UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Unique
  • Eq VersionDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Version
  • Eq ControlMessageDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Control
  • Eq EPollFdDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Eq EventTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Eq EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Eq EventLifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Eq LifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Eq FdKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Manager
  • Eq StateDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Manager
  • Eq EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Poll
  • Eq TimeoutKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.TimeOut
  • Eq StateDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.TimerManager
  • Eq UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Unique
  • Eq ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Eq ArithExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Eq SpecConstrAnnotationDefined in ghc-internal-9.1401.0 · GHC.Internal.Exts
  • Eq FingerprintDefined in ghc-internal-9.1401.0 · GHC.Internal.Fingerprint.Type
  • Eq ErrnoDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Error
  • Eq CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Eq IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Eq WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Eq ForeignSrcLangDefined in ghc-internal-9.1401.0 · GHC.Internal.ForeignSrcLang
  • Eq AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq PrimTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Eq TsoFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Eq WhatNextDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Eq WhyBlockedDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Eq HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Eq StgInfoTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Eq CostCentreDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Eq CostCentreStackDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Eq IndexTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Eq StgTSOProfInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Eq MaskingStateDefined in ghc-internal-9.1401.0 · GHC.Internal.IO
  • Eq BufferStateDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Buffer
  • Eq IODeviceTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Eq SeekModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Eq CodingProgressDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Encoding.Types
  • Eq ArrayExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Eq AsyncExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Eq ExitCodeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Eq IOErrorTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Eq IOExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Eq HandlePosnDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle
  • Eq BufferModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Eq HandleDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Eq NewlineDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Eq NewlineModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Eq IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Eq IoSubSystemDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.SubSystem
  • Eq InfoProvDefined in ghc-internal-9.1401.0 · GHC.Internal.InfoProv.Types
  • Eq Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq ExtensionDefined in ghc-internal-9.1401.0 · GHC.Internal.LanguageExtensions
  • Eq IoManagerFlagDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Eq ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Eq WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Eq ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Eq WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Eq StackEntryDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Decode
  • Eq SrcLocDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Types
  • Eq CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CTimerDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Eq AnnLookupDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq AnnTargetDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq BangDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq BndrVisDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq BodyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq BytesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq CallconvDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ConDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq DecDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq DerivClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq DerivStrategyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq DocLocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ExpDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq FamilyResultSigDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq FixityDirectionDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ForeignDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq FunDepDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq GuardDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq InfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq InjectivityAnnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq InlineDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq LitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq LocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq MatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ModNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq ModuleInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq NameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq NameFlavourDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq NameSpaceDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq NamespaceSpecifierDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq OccNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq OverlapDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PatDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PatSynArgsDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PatSynDirDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PhasesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PkgNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq PragmaDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq RangeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq RoleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq RuleBndrDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq RuleMatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq SafetyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq SpecificityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq StmtDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq TyLitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq TySynEqnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq TypeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq TypeFamilyHeadDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq LexemeDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.Read.Lex
  • Eq NumberDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.Read.Lex
  • Eq SomeCharDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Eq SomeSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Eq SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Eq BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    Note that due to the presence of NaN, Double's Eq instance does not satisfy reflexivity.

    Example1 expression
    0/0 == (0/0 :: Double)False

    Also note that Double's Eq instance does not satisfy substitutivity:

    Example2 expressions
    0 == (-0 :: Double)Truerecip 0 == recip (-0 :: Double)False
  • Eq FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    Note that due to the presence of NaN, Float's Eq instance does not satisfy reflexivity.

    Example1 expression
    0/0 == (0/0 :: Float)False

    Also note that Float's Eq instance does not satisfy extensionality:

    Example2 expressions
    0 == (-0 :: Float)Truerecip 0 == recip (-0 :: Float)False
  • Eq IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq TrNameDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq TyConDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Unicode
  • Eq Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Eq URIDefined in network-uri-2.6.4.2 · Network.URI
  • Eq URIAuthDefined in network-uri-2.6.4.2 · Network.URI
  • Eq TimeLocaleDefined in old-locale-1.0.0.7 · System.Locale
  • Eq EncodingExceptionDefined in os-string-2.0.8 · System.OsString.Encoding.Internal
  • Eq OsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Byte equality of the internal representation.

  • Eq OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Byte equality of the internal representation.

  • Eq PosixCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Eq PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Eq WindowsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Eq WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Eq MessageDefined in parsec-3.1.18.0 · Text.Parsec.Error
  • Eq ParseErrorDefined in parsec-3.1.18.0 · Text.Parsec.Error
  • Eq SourcePosDefined in parsec-3.1.18.0 · Text.Parsec.Pos
  • Eq ModeDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq StyleDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq TextDetailsDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Eq DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Eq PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Eq CmdSpecDefined in process-1.6.26.1 · System.Process.Common
  • Eq CreateProcessDefined in process-1.6.26.1 · System.Process.Common
  • Eq StdStreamDefined in process-1.6.26.1 · System.Process.Common
  • Eq CommunicationHandleDefined in process-1.6.26.1 · System.Process.CommunicationHandle.Internal
  • Eq CardinalityDefined in random-1.3.1 · System.Random.GFinite
  • Eq StdGenDefined in random-1.3.1 · System.Random.Internal
  • Eq ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    Scientific numbers can be safely compared for equality. No magnitude 10^e is calculated so there's no risk of a blowup in space or time when comparing scientific numbers coming from untrusted sources.

  • Eq TSemDefined in stm-2.5.3.1 · Control.Concurrent.STM.TSem
  • Eq UnicodeExceptionDefined in text-2.1.3 · Data.Text.Encoding.Error
  • Eq I8Defined in text-2.1.3 · Data.Text.Foreign
  • Eq TextDefined in text-2.1.3 · Data.Text · orphan
  • Eq BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Eq PartialUtf8CodePointDefined in text-2.1.3 · Data.Text.Internal.Encoding
  • Eq Utf8StateDefined in text-2.1.3 · Data.Text.Internal.Encoding
  • Eq DecoderStateDefined in text-2.1.3 · Data.Text.Internal.Encoding.Utf8
  • Eq SizeDefined in text-2.1.3 · Data.Text.Internal.Fusion.Size
  • Eq TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Eq BDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Eq ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Eq ConstructorInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq ConstructorVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq DatatypeInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq DatatypeVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq FieldStrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq StrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq UnpackednessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Eq CalendarDiffDaysDefined in time-1.15 · Data.Time.Calendar.CalendarDiffDays
  • Eq DayDefined in time-1.15 · Data.Time.Calendar.Days
  • Eq MonthDefined in time-1.15 · Data.Time.Calendar.Month
  • Eq QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Eq QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Eq DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week
  • Eq FirstWeekTypeDefined in time-1.15 · Data.Time.Calendar.WeekDate
  • Eq AbsoluteTimeDefined in time-1.15 · Data.Time.Clock.Internal.AbsoluteTime
  • Eq DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Eq NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Eq SystemTimeDefined in time-1.15 · Data.Time.Clock.Internal.SystemTime
  • Eq UTCTimeDefined in time-1.15 · Data.Time.Clock.Internal.UTCTime
  • Eq UniversalTimeDefined in time-1.15 · Data.Time.Clock.Internal.UniversalTime
  • Eq TimeLocaleDefined in time-1.15 · Data.Time.Format.Locale
  • Eq WeekTypeDefined in time-1.15 · Data.Time.Format.Parse.Instances
  • Eq CalendarDiffTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.CalendarDiffTime
  • Eq LocalTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.LocalTime
  • Eq TimeOfDayDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeOfDay
  • Eq TimeZoneDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeZone
  • Eq DirTypeDefined in unix-2.8.8.0 · System.Posix.Directory.Common
  • Eq AdviceDefined in unix-2.8.8.0 · System.Posix.Fcntl
  • Eq CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Eq StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Eq StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Eq OpenFileFlagsDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Eq OpenModeDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Eq ProcessStatusDefined in unix-2.8.8.0 · System.Posix.Process.Internals
  • Eq ResourceDefined in unix-2.8.8.0 · System.Posix.Resource
  • Eq ResourceLimitDefined in unix-2.8.8.0 · System.Posix.Resource
  • Eq ResourceLimitsDefined in unix-2.8.8.0 · System.Posix.Resource
  • Eq BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Eq GroupEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Eq UserEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Eq SubHashPathDefined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Eq UUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Eq UnpackedUUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Eq SizeDefined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle.Size
  • Eq ChecksDefined in vector-0.13.2.0 · Data.Vector.Internal.Check
  • Eq ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq1 f => Eq (Fix f)Defined in data-fix-0.3.4 · Data.Fix
  • Eq (Encoding' a)Defined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • Eq (Async a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Eq (Chan a)Defined in base-4.22.0.0 · Control.Concurrent.Chan
  • Eq (MutableByteArray s)Defined in base-4.22.0.0 · Data.Array.Byte
  • Eq (TVar a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Eq (ConstPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.ConstPtr
  • Eq (ForeignPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ForeignPtr
  • Eq (IORef a)Defined in ghc-internal-9.1401.0 · GHC.Internal.IORef

    Pointer equality.

  • Eq (MVar a)Defined in ghc-internal-9.1401.0 · GHC.Internal.MVar

    Compares the underlying pointers.

  • Eq (FunPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Eq (Ptr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Eq (StablePtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Stable
  • Eq (StableName a)Defined in ghc-internal-9.1401.0 · GHC.Internal.StableName
  • Eq (SChar c)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Eq (SSymbol s)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Eq (SNat n)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Eq (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq (Seed g)Defined in random-1.3.1 · System.Random.Internal
  • Eq (TBQueue a)Defined in stm-2.5.3.1 · Control.Concurrent.STM.TBQueue
  • Eq (TChan a)Defined in stm-2.5.3.1 · Control.Concurrent.STM.TChan
  • Eq (TMVar a)Defined in stm-2.5.3.1 · Control.Concurrent.STM.TMVar
  • Eq (TQueue a)Defined in stm-2.5.3.1 · Control.Concurrent.STM.TQueue
  • Eq (TVar a)Defined in stm-2.5.3.1 · Control.Sequential.STM
  • Eq a => Eq (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Negative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (NonEmptyList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (NonNegative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (NonPositive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (NonZero a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (OrderedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Positive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (SortedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Eq a => Eq (IResult a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq a => Eq (Result a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Eq a => Eq (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Eq a => Eq (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Eq a => Eq (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Eq a => Eq (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Eq a => Eq (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Eq a => Eq (IntMap a)Defined in containers-0.8 · Data.IntMap.Internal
  • Eq a => Eq (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Eq a => Eq (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Eq a => Eq (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Eq a => Eq (Intersection a)Defined in containers-0.8 · Data.Set.Internal
  • Eq a => Eq (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Eq a => Eq (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Eq a => Eq (Tree a)Defined in containers-0.8 · Data.Tree
  • Eq a => Eq (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Eq a => Eq (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Eq a => Eq (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Eq a => Eq (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Eq a => Eq (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Eq a => Eq (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Eq a => Eq (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Eq a => Eq (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Eq a => Eq (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Eq a => Eq (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq a => Eq (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq a => Eq (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq a => Eq (ZipList a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Eq a => Eq (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Maybe
  • Eq a => Eq (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Eq a => Eq (Hashed a)Defined in hashable-1.5.1.0 · Data.Hashable.Class

    Uses precomputed hash to detect inequality faster

  • Eq a => Eq (AnnotDetails a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq a => Eq (Span a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Eq a => Eq (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Eq a => Eq (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Eq a => Eq (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Eq a => Eq (Stream a)Defined in text-2.1.3 · Data.Text.Internal.Fusion.Types
  • Eq a => Eq (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal

    Note that, in the presence of hash collisions, equal HashSets may behave differently, i.e. extensionality may be violated:

    Example2 expressions
    data D = A | B deriving (Eq, Show)instance Hashable D where hashWithSalt salt _d = salt
    Example2 expressions
    x = fromList [A, B]y = fromList [B, A]
    Example3 expressions
    x == yTruetoList x[A,B]toList y[B,A]

    In general, the lack of extensionality can be observed with any function that depends on the key ordering, such as folds and traversals.

  • Eq a => Eq (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Eq a => Eq (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Eq a => Eq (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq a => Eq [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq flag => Eq (TyVarBndr flag)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Eq g => Eq (StateGen g)Defined in random-1.3.1 · System.Random.Internal
  • Eq g => Eq (AtomicGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Eq g => Eq (IOGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Eq g => Eq (STGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Eq g => Eq (TGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Eq k => Eq (Error k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Eq k => Eq (Validity k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Eq m => Eq (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Eq p => Eq (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq v => Eq (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Eq vertex => Eq (SCC vertex)Defined in containers-0.8 · Data.Graph
  • (Functor f, Eq1 f) => Eq (Mu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Functor f, Eq1 f) => Eq (Nu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Eq a, Prim a) => Eq (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray
  • (Storable a, Eq a) => Eq (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • (Prim a, Eq a) => Eq (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • (Unbox a, Eq a) => Eq (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • Eq (IOUArray i e)Defined in array-0.5.8.0 · Data.Array.IO.Internals
  • Eq (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Eq (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Eq (TypeRep a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Eq (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (IOArray i e)Defined in ghc-internal-9.1401.0 · GHC.Internal.IOArray
  • Eq (STRef s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.STRef

    Pointer equality.

  • Eq (MutableArray s a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Eq (MVar s a)Defined in primitive-0.9.1.0 · Data.Primitive.MVar
  • Eq (MutVar s a)Defined in primitive-0.9.1.0 · Data.Primitive.MutVar
  • Eq (MutablePrimArray s a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray
  • Eq (PrimVar s a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimVar
  • Eq (SmallMutableArray s a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Eq (f a) => Eq (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • Eq a => Eq (Arg a b)Defined in base-4.22.0.0 · Data.Semigroup

    Note that Arg's Eq instance does not satisfy extensionality:

    Example2 expressions
    Arg 0 0 == Arg 0 1Truelet f (Arg _ x) = x in f (Arg 0 0) == f (Arg 0 1)False
  • (Eq1 f, Eq a) => Eq (Lift f a)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • (Eq1 m, Eq a) => Eq (MaybeT m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • (Eq a, Eq b) => Eq (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • (Eq a, Eq b) => Eq (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • (Eq a, Eq b) => Eq (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • (Eq a, Eq b) => Eq (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Eq a, Eq b) => Eq (These a b)Defined in these-1.2.1 · Data.These
  • (Eq a, Eq b) => Eq (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Eq i, Eq e) => Eq (TArray i e)Defined in stm-2.5.3.1 · Control.Concurrent.STM.TArray
  • (Eq k, Eq a) => Eq (Map k a)Defined in containers-0.8 · Data.Map.Internal
  • (Eq k, Eq e) => Eq (TkArray k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Eq k, Eq e) => Eq (TkRecord k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Eq k, Eq e) => Eq (Tokens k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Eq k, Eq v) => Eq (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal

    Note that, in the presence of hash collisions, equal HashMaps may behave differently, i.e. extensionality may be violated:

    Example2 expressions
    data D = A | B deriving (Eq, Show)instance Hashable D where hashWithSalt salt _d = salt
    Example2 expressions
    x = fromList [(A,1), (B,2)]y = fromList [(B,2), (A,1)]
    Example3 expressions
    x == yTruetoList x[(A,1),(B,2)]toList y[(B,2),(A,1)]

    In general, the lack of extensionality can be observed with any function that depends on the key ordering, such as folds and traversals.

  • (Eq k, Eq v) => Eq (Leaf k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal
  • (Ix i, Eq e) => Eq (Array i e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Arr
  • (Ix ix, Eq e, IArray UArray e) => Eq (UArray ix e)Defined in array-0.5.8.0 · Data.Array.Base
  • (GEq (Rep1 f a), Generic1 f) => Eq (FunctorClassesDefault f a)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Eq (STUArray s i e)Defined in array-0.5.8.0 · Data.Array.Base
  • Eq (STArray s i e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Arr
  • Eq (Coercion a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • Eq (OrderingI a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Ord
  • Eq (URec Char p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Int p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Word p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec (Ptr ()) p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Eq (bi a b) => Eq (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Eq (f a) => Eq (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Eq (f a) => Eq (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq (f p) => Eq (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (p (Fix p a) a) => Eq (Fix p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Fix
  • Eq (p a a) => Eq (Join p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Join
  • Eq a => Eq (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Eq a => Eq (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Eq a => Eq (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Eq b => Eq (Tagged s b)Defined in tagged-0.8.11 · Data.Tagged
  • (Eq1 f, Eq a) => Eq (Backwards f a)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • (Eq1 f, Eq a) => Eq (IdentityT f a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • (Eq1 f, Eq a) => Eq (Reverse f a)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • (Eq (f a), Eq (g a), Eq a) => Eq (These1 f g a)Defined in these-1.2.1 · Data.Functor.These
  • (Eq a, Eq b, Eq c) => Eq (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Eq e, Eq1 m, Eq a) => Eq (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • (Eq w, Eq1 m, Eq a) => Eq (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • (Eq w, Eq1 m, Eq a) => Eq (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • (Generic1 f, Eq (Rep1 f a)) => Eq (Generically1 f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (a :~~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Eq c => Eq (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Eq (f a), Eq (g a)) => Eq (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Eq (f a), Eq (g a)) => Eq (Sum f g a)Defined in base-4.22.0.0 · Data.Functor.Sum
  • (Eq (f p), Eq (g p)) => Eq ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Eq (f p), Eq (g p)) => Eq ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq (f (g a)) => Eq (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Eq (f (g p)) => Eq ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (f a) => Eq (Clown f a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Eq (f p) => Eq (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (g b) => Eq (Joker g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Eq (p a b) => Eq (WrappedBifunctor p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Eq (p b a) => Eq (Flip p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Flip
  • (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Eq (f a b), Eq (g a b)) => Eq (Product f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • (Eq (p a b), Eq (q a b)) => Eq (Sum p q a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f) => Eq (a, b, c, d, e, f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq (f (p a b)) => Eq (Tannen f p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g) => Eq (a, b, c, d, e, f, g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Eq (p (f a) (g b)) => Eq (Biff p f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (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)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
classclass Eq a => Ord a where
#

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.

Ord, as defined by the Haskell report, implements a total order and has the following properties:

Comparability

x <= y || y <= x

=

True

Transitivity

if

x <= y && y <= z

=

True

, then

x <= z

=

True

Reflexivity

x <= x

=

True

Antisymmetry

if

x <= y && y <= x

=

True

, then

x == y

=

True

The following operator interactions are expected to hold:

  1. x >= y = y <= x

  2. x < y = x <= y && x /= y

  3. x > y = y < x

  4. x < y = compare x y == LT

  5. x > y = compare x y == GT

  6. x == y = compare x y == EQ

  7. min x y == if x <= y then x else y = True

  8. max 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 (==). Users who expect a stronger guarantee are advised to write their own min and/or max functions.

The nuance of the above distinction is not always fully internalized by developers, and in the past (tracing back to the Haskell 1.4 Report) the specification for Ord asserted the stronger property that (min x y, max x y) = (x, y) or (y, x), or in other words, that min and max will return one of their arguments, using argument order as the tie-breaker if the arguments are equal by comparison. A few list and Foldable functions have behavior that is best understood with this assumption in mind: all variations of minimumBy and maximumBy (which can't use min and max in their implementations) are written such that minimumBy compare and maximumBy compare are respectively equivalent to minimum and maximum (which do use min and max) only if min and max adhere to this tie-breaking convention. Otherwise, if there are multiple least or largest elements in a container, minimum and maximum may not return the same one that minimumBy compare and maximumBy compare do (though they should return something that is equal). (This is relevant for types with non-extensional equality, like Arg, but also in cases where the precise reference held matters for memory-management reasons.) Unless there is a reason to deviate, it is less confusing for implementors of Ord to respect this same convention (as the default definitions of min and max do).

Minimal complete definition: either compare or <=. Using compare can be more efficient for complex types.

Methods

Instances412Ord, …
  • Ord ASCIIStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord PrintableStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord UnicodeStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord OrdADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Ord OrdBDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Ord OrdCDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Ord KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Ord ArityDefined in aeson-2.2.5.1 · Data.Aeson.TH
  • Ord DotNetTimeDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Ord JSONPathElementDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Ord ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal

    The ordering is total, consistent with Eq instance. However, nothing else about the ordering is specified, and it may change from environment to environment and version to version of either this package or its dependencies (hashable and 'unordered-containers').

  • Ord ByteArrayDefined in base-4.22.0.0 · Data.Array.Byte

    Non-lexicographic ordering. This compares the lengths of the byte arrays first and uses a lexicographic ordering if the lengths are equal. Subject to change between major versions.

  • Ord OptionsDefined in bifunctors-5.6.3 · Data.Bifunctor.TH
  • Ord ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Ord ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Ord ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal

    Lexicographic order.

  • Ord Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Ord JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Ord JSValueDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Ord ByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray
  • Ord SlicedByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray.Sliced
  • Ord TokenTypeDefined in cborg-0.2.10.0 · Codec.CBOR.Decoding
  • Ord TermTokenDefined in cborg-0.2.10.0 · Codec.CBOR.FlatTerm
  • Ord TermDefined in cborg-0.2.10.0 · Codec.CBOR.Term
  • Ord TimeSpecDefined in clock-0.8.4 · System.Clock
  • Ord SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Ord IntSetDefined in containers-0.8 · Data.IntSet.Internal
  • Ord IntersectionDefined in containers-0.8 · Data.IntSet.Internal
  • Ord FileTypeDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Ord PermissionsDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Ord XdgDirectoryDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Ord XdgDirectoryListDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Ord VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Ord BigNatDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.BigNat
  • Ord IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Integer
  • Ord NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Natural
  • Ord ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Ord ClosureTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.ClosureTypes
  • Ord BlockReasonDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Ord ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Ord ThreadStatusDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Ord AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord SomeTypeRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Ord UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Unique
  • Ord VersionDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Version
  • Ord TimeoutKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.TimeOut
  • Ord UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Unique
  • Ord ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Ord ArithExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Ord FingerprintDefined in ghc-internal-9.1401.0 · GHC.Internal.Fingerprint.Type
  • Ord CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Ord IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Ord WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Ord AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord PrimTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Ord TsoFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Ord WhatNextDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Ord WhyBlockedDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Ord HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Ord CostCentreDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Ord CostCentreStackDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Ord IndexTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Ord StgTSOProfInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Ord SeekModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Ord ArrayExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Ord AsyncExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Ord ExitCodeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Ord BufferModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Ord NewlineDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Ord NewlineModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Ord IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Ord Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord ExtensionDefined in ghc-internal-9.1401.0 · GHC.Internal.LanguageExtensions
  • Ord ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Ord WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Ord ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Ord WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Ord CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CTimerDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Ord AnnLookupDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord AnnTargetDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord BangDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord BndrVisDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord BodyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord BytesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord CallconvDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ConDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord DecDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord DerivClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord DerivStrategyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord DocLocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ExpDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord FamilyResultSigDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord FixityDirectionDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ForeignDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord FunDepDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord GuardDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord InfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord InjectivityAnnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord InlineDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord LitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord LocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord MatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ModNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord ModuleInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord NameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord NameFlavourDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord NameSpaceDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord NamespaceSpecifierDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord OccNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord OverlapDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PatDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PatSynArgsDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PatSynDirDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PhasesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PkgNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord PragmaDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord RangeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord RoleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord RuleBndrDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord RuleMatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord SafetyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord SpecificityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord StmtDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord TyLitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord TySynEqnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord TypeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord TypeFamilyHeadDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord SomeCharDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Ord SomeSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Ord SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Ord BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    IEEE 754 Double-precision type includes not only numbers, but also positive and negative infinities and a special element called NaN (which can be quiet or signal).

    IEEE 754-2008, section 5.11 requires that if at least one of arguments of <=, <, >, >= is NaN then the result of the comparison is False, and instance Ord Double complies with this requirement. This violates the reflexivity: both NaN <= NaN and NaN >= NaN are False.

    IEEE 754-2008, section 5.10 defines totalOrder predicate. Unfortunately, compare on Doubles violates the IEEE standard and does not define a total order. More specifically, both compare NaN x and compare x NaN always return GT.

    Thus, users must be extremely cautious when using instance Ord Double. For instance, one should avoid ordered containers with keys represented by Double, because data loss and corruption may happen. An IEEE-compliant compare is available in fp-ieee package as TotallyOrdered newtype.

    Moving further, the behaviour of min and max with regards to NaN is also non-compliant. IEEE 754-2008, section 5.3.1 defines that quiet NaN should be treated as a missing data by minNum and maxNum functions, for example, minNum(NaN, 1) = minNum(1, NaN) = 1. Some languages such as Java deviate from the standard implementing minNum(NaN, 1) = minNum(1, NaN) = NaN. However, min / max in base are even worse: min NaN 1 is 1, but min 1 NaN is NaN.

    IEEE 754-2008 compliant min / max can be found in ieee754 package under minNum / maxNum names. Implementations compliant with minimumNumber / maximumNumber from a newer IEEE 754-2019, section 9.6 are available from fp-ieee package.

  • Ord FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    See instance Ord Double for discussion of deviations from IEEE 754 standard.

  • Ord IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord TyConDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Unicode
  • Ord Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Ord URIDefined in network-uri-2.6.4.2 · Network.URI
  • Ord URIAuthDefined in network-uri-2.6.4.2 · Network.URI
  • Ord TimeLocaleDefined in old-locale-1.0.0.7 · System.Locale
  • Ord OsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Byte ordering of the internal representation.

  • Ord OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Byte ordering of the internal representation.

  • Ord PosixCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Ord PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Ord WindowsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Ord WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Ord MessageDefined in parsec-3.1.18.0 · Text.Parsec.Error
  • Ord SourcePosDefined in parsec-3.1.18.0 · Text.Parsec.Pos
  • Ord PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Ord PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Ord CommunicationHandleDefined in process-1.6.26.1 · System.Process.CommunicationHandle.Internal
  • Ord CardinalityDefined in random-1.3.1 · System.Random.GFinite
  • Ord ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    Scientific numbers can be safely compared for ordering. No magnitude 10^e is calculated so there's no risk of a blowup in space or time when comparing scientific numbers coming from untrusted sources.

  • Ord I8Defined in text-2.1.3 · Data.Text.Foreign
  • Ord TextDefined in text-2.1.3 · Data.Text · orphan
  • Ord BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Ord TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Ord BDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Ord ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Ord ConstructorVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Ord DatatypeVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Ord FieldStrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Ord StrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Ord UnpackednessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Ord DayDefined in time-1.15 · Data.Time.Calendar.Days
  • Ord MonthDefined in time-1.15 · Data.Time.Calendar.Month
  • Ord QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Ord QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Ord DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week
  • Ord AbsoluteTimeDefined in time-1.15 · Data.Time.Clock.Internal.AbsoluteTime
  • Ord DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Ord NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Ord SystemTimeDefined in time-1.15 · Data.Time.Clock.Internal.SystemTime
  • Ord UTCTimeDefined in time-1.15 · Data.Time.Clock.Internal.UTCTime
  • Ord UniversalTimeDefined in time-1.15 · Data.Time.Clock.Internal.UniversalTime
  • Ord TimeLocaleDefined in time-1.15 · Data.Time.Format.Locale
  • Ord LocalTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.LocalTime
  • Ord TimeOfDayDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeOfDay
  • Ord TimeZoneDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeZone
  • Ord DirTypeDefined in unix-2.8.8.0 · System.Posix.Directory.Common
  • Ord CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Ord StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Ord StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Ord OpenFileFlagsDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Ord OpenModeDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Ord ProcessStatusDefined in unix-2.8.8.0 · System.Posix.Process.Internals
  • Ord BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Ord UUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Ord UnpackedUUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Ord ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord1 f => Ord (Fix f)Defined in data-fix-0.3.4 · Data.Fix
  • Ord (Encoding' a)Defined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • Ord (Async a)Defined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Ord (ConstPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.ConstPtr
  • Ord (ForeignPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ForeignPtr
  • Ord (FunPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Ord (Ptr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Ord (SChar c)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Ord (SSymbol s)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Ord (SNat n)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Ord (Seed g)Defined in random-1.3.1 · System.Random.Internal
  • Ord a => Ord (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Negative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (NonEmptyList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (NonNegative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (NonPositive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (NonZero a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (OrderedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Positive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (SortedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Ord a => Ord (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Ord (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Ord (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Ord (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord a => Ord (IntMap a)Defined in containers-0.8 · Data.IntMap.Internal
  • Ord a => Ord (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Ord a => Ord (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Ord a => Ord (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Ord a => Ord (Intersection a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => Ord (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Ord a => Ord (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Ord a => Ord (Tree a)Defined in containers-0.8 · Data.Tree
  • Ord a => Ord (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Ord a => Ord (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Ord a => Ord (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Ord a => Ord (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Ord a => Ord (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Base
  • Ord a => Ord (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Ord a => Ord (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Ord a => Ord (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Ord a => Ord (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Ord a => Ord (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord a => Ord (ZipList a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Ord a => Ord (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Maybe
  • Ord a => Ord (Hashed a)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Ord a => Ord (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array

    Lexicographic ordering. Subject to change between major versions.

  • Ord a => Ord (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray

    Lexicographic ordering. Subject to change between major versions.

  • Ord a => Ord (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Ord a => Ord (Stream a)Defined in text-2.1.3 · Data.Text.Internal.Fusion.Types
  • Ord a => Ord (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal
  • Ord a => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Ord a => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Ord a => Ord (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord a => Ord [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord flag => Ord (TyVarBndr flag)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Ord g => Ord (StateGen g)Defined in random-1.3.1 · System.Random.Internal
  • Ord g => Ord (AtomicGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Ord g => Ord (IOGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Ord g => Ord (STGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Ord g => Ord (TGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Ord m => Ord (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Ord p => Ord (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord v => Ord (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Integral a => Ord (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • (Functor f, Ord1 f) => Ord (Mu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Functor f, Ord1 f) => Ord (Nu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Ord a, Prim a) => Ord (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray

    Lexicographic ordering. Subject to change between major versions.

  • (Storable a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • (Prim a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • (Unbox a, Ord a) => Ord (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • Ord (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Ord (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Ord (TypeRep a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Ord (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (f a) => Ord (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • Ord a => Ord (Arg a b)Defined in base-4.22.0.0 · Data.Semigroup

    Note that Arg's Ord instance has min and max implementations that differ from the tie-breaking conventions of the default implementation of min and max in class Ord; Arg breaks ties by favoring the first argument in both functions.

  • (Ord1 f, Ord a) => Ord (Lift f a)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • (Ord1 m, Ord a) => Ord (MaybeT m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • (Ord a, Ord b) => Ord (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • (Ord a, Ord b) => Ord (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • (Ord a, Ord b) => Ord (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • (Ord a, Ord b) => Ord (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Ord a, Ord b) => Ord (These a b)Defined in these-1.2.1 · Data.These
  • (Ord a, Ord b) => Ord (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Ord k, Ord v) => Ord (Map k v)Defined in containers-0.8 · Data.Map.Internal
  • (Ord k, Ord v) => Ord (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal

    The ordering is total and consistent with the Eq instance. However, nothing else about the ordering is specified, and it may change from version to version of either this package or of hashable.

  • (Ix i, Ord e) => Ord (Array i e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Arr
  • (Ix ix, Ord e, IArray UArray e) => Ord (UArray ix e)Defined in array-0.5.8.0 · Data.Array.Base
  • (GOrd (Rep1 f a), Generic1 f) => Ord (FunctorClassesDefault f a)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Ord (Coercion a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • Ord (URec Char p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Int p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Word p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec (Ptr ()) p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Ord (bi a b) => Ord (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Ord (f a) => Ord (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Ord (f a) => Ord (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Ord (f p) => Ord (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (p (Fix p a) a) => Ord (Fix p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Fix
  • Ord (p a a) => Ord (Join p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Join
  • Ord a => Ord (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Ord a => Ord (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Ord a => Ord (Bundle Id v a)Defined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle · orphan
  • Ord b => Ord (Tagged s b)Defined in tagged-0.8.11 · Data.Tagged
  • (Ord1 f, Ord a) => Ord (Backwards f a)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • (Ord1 f, Ord a) => Ord (IdentityT f a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • (Ord1 f, Ord a) => Ord (Reverse f a)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • (Ord (f a), Ord (g a), Ord a) => Ord (These1 f g a)Defined in these-1.2.1 · Data.Functor.These
  • (Ord a, Ord b, Ord c) => Ord (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Ord e, Ord1 m, Ord a) => Ord (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • (Ord w, Ord1 m, Ord a) => Ord (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • (Ord w, Ord1 m, Ord a) => Ord (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • (Generic1 f, Ord (Rep1 f a)) => Ord (Generically1 f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (a :~~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Ord c => Ord (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Ord (f a), Ord (g a)) => Ord (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Ord (f a), Ord (g a)) => Ord (Sum f g a)Defined in base-4.22.0.0 · Data.Functor.Sum
  • (Ord (f p), Ord (g p)) => Ord ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Ord (f p), Ord (g p)) => Ord ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord (f (g a)) => Ord (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Ord (f (g p)) => Ord ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (f a) => Ord (Clown f a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Ord (f p) => Ord (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (g b) => Ord (Joker g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Ord (p a b) => Ord (WrappedBifunctor p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Ord (p b a) => Ord (Flip p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Flip
  • (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • (Ord (f a b), Ord (g a b)) => Ord (Product f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • (Ord (p a b), Ord (q a b)) => Ord (Sum p q a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f) => Ord (a, b, c, d, e, f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Ord (f (p a b)) => Ord (Tannen f p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • Ord (p (f a) (g b)) => Ord (Biff p f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
  • (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-internal-9.1401.0 · GHC.Internal.Classes
newtypenewtype STM a
#

A monad supporting atomic memory transactions.

Instances17Monad, Functor, MonadFix, Applicative, Alternative, MonadPlus, …
datadata ThreadId
#

A ThreadId is an abstract type representing a handle to a thread. ThreadId is an instance of Eq, Ord and Show, where the Ord instance implements an arbitrary total ordering over ThreadIds. The Show instance lets you convert an arbitrary-valued ThreadId to string form; showing a ThreadId value is occasionally useful when debugging or diagnosing the behaviour of a concurrent program.

Note: in GHC, if you have a ThreadId, you essentially have a pointer to the thread itself. This means the thread itself can't be garbage collected until you drop the ThreadId. This misfeature would be difficult to correct while continuing to support threadStatus.

Instances5Eq, Ord, Show, NFData, Hashable
  • Eq ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Ord ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Show ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • NFData ThreadIdDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Hashable ThreadIdDefined in hashable-1.5.1.0 · Data.Hashable.Class
classclass Category (cat :: k -> k -> Type) where
#

A class for categories.

In mathematics, a category is defined as a collection of objects and a collection of morphisms between objects, together with an identity morphism id for every object and an operation (.) that composes compatible morphisms.

This class is defined in an analogous way. The collection of morphisms is represented by a type parameter cat, which has kind k -> k -> Type for some kind variable k that represents the collection of objects; most of the time the choice of k will be Type.

Examples

As the method names suggest, there's a category of functions:

instance Category (->) where
  id = \x -> x
  f . g = \x -> f (g x)

Isomorphisms form a category as well:

data Iso a b = Iso (a -> b) (b -> a)

instance Category Iso where
  id = Iso id id
  Iso f1 g1 . Iso f2 g2 = Iso (f1 . f2) (g2 . g1)

Natural transformations are another important example:

newtype f ~> g = NatTransform (forall x. f x -> g x)

instance Category (~>) where
  id = NatTransform id
  NatTransform f . NatTransform g = NatTransform (f . g)

Using the TypeData language extension, we can also make a category where k isn't Type, but a custom kind Door instead:

type data Door = DoorOpen | DoorClosed

data Action (before :: Door) (after :: Door) where
  DoNothing :: Action door door
  OpenDoor :: Action start DoorClosed -> Action start DoorOpen
  CloseDoor :: Action start DoorOpen -> Action start DoorClosed

instance Category Action where
  id = DoNothing

  DoNothing . action = action
  OpenDoor rest . action = OpenDoor (rest . action)
  CloseDoor rest . action = CloseDoor (rest . action)

Methods

  • (.) :: cat b c -> cat a b -> cat a cinfixr 9

    Morphism composition. Implementations should satisfy the law:

    Associativity

    f . (g . h) = (f . g) . h

    This means that the way morphisms are grouped is irrelevant, so it is unambiguous to write a composition of morphisms as f . g . h, without parentheses.

Instances20Category, …
newtypenewtype NoMethodError
#

A class method without a definition (neither a default definition, nor a definition in the appropriate instance) was called. The String gives information about which method it was.

Constructors

Instances2Show, Exception
datadata NonTermination
#

Thrown when the runtime system detects that the computation is guaranteed not to terminate. Note that there is no guarantee that the runtime system will notice whether any given computation is guaranteed to terminate or not.

Instances2Show, Exception
newtypenewtype RecConError
#

An uninitialised record field was used. The String gives information about the source location where the record was constructed.

Constructors

Instances2Show, Exception
  • Show RecConErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Exception RecConErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
newtypenewtype RecSelError
#

A record selector was applied to a constructor without the appropriate field. This can only happen with a datatype with multiple constructors, where some fields are in one constructor but not another. The String gives information about the source location of the record selector.

Constructors

Instances2Show, Exception
  • Show RecSelErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Exception RecSelErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
newtypenewtype RecUpdError
#

A record update was performed on a constructor without the appropriate field. This can only happen with a datatype with multiple constructors, where some fields are in one constructor but not another. The String gives information about the source location of the record update.

Constructors

Instances2Show, Exception
  • Show RecUpdErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Exception RecUpdErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
newtypenewtype TypeError
#

An expression that didn't typecheck during compile time was called. This is only possible with -fdefer-type-errors. The String gives details about the failed type check.

Constructors

Instances2Show, Exception
  • Show TypeErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Exception TypeErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
classclass Monad m => MonadFail (m :: Type -> Type) where
#

When a value is bound in do-notation, the pattern on the left hand side of <- might not match. In this case, this class provides a function to recover.

A Monad without a MonadFail instance may only be used in conjunction with pattern that always match, such as newtypes, tuples, data types with only a single data constructor, and irrefutable patterns (~pat).

Instances of MonadFail should satisfy the following law: fail s should be a left zero for >>=,

fail s >>= f  =  fail s

If your Monad is also MonadPlus, a popular definition is

fail _ = mzero

fail s should be an action that runs in the monad itself, not an exception (except in instances of MonadIO). In particular, fail should not be implemented in terms of error.

Instances41MonadFail, …
classclass Monad m => MonadIO (m :: Type -> Type) where
#

Monads in which IO computations may be embedded. Any monad built by applying a sequence of monad transformers to the IO monad will be an instance of this class.

Instances should satisfy the following laws, which state that liftIO is a transformer of monads:

Methods

  • liftIO :: IO a -> m a

    Lift a computation from the IO monad. This allows us to run IO computations in any monadic stack, so long as it supports these kinds of operations (i.e. IO is the base monad for the stack).

    Example
    import Control.Monad.Trans.State -- from the "transformers" library
    
    printState :: Show s => StateT s IO ()
    printState = do
      state <- get
      liftIO $ print state

    Had we omitted liftIO, we would have ended up with this error:

    • Couldn't match type ‘IO’ with ‘StateT s IO’
     Expected type: StateT s IO ()
       Actual type: IO ()

    The important part here is the mismatch between StateT s IO () and IO ().

    Luckily, we know of a function that takes an IO a and returns an (m a): liftIO, enabling us to run the program and see the expected results:

    > evalStateT printState "hello"
    "hello"
    
    > evalStateT printState 3
    3
    
Instances21MonadIO, …
newtypenewtype And a
#

Monoid under bitwise AND.

Example1 expression
getAnd (And 0xab <> And 0x12) :: Word82

Constructors

Instances12Bounded, Enum, Eq, Read, Show, Semigroup, …
  • Bounded a => Bounded (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Semigroup (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => Monoid (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • Bits a => Bits (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => FiniteBits (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Arbitrary a => Arbitrary (And a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary a => CoArbitrary (And a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => Function (And a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
newtypenewtype Iff a
#

Monoid under bitwise 'equality'; defined as 1 if the corresponding bits match, and 0 otherwise.

Example1 expression
getIff (Iff 0xab <> Iff 0x12) :: Word870

Constructors

Instances12Bounded, Enum, Eq, Read, Show, Semigroup, …
  • Bounded a => Bounded (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => Semigroup (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • FiniteBits a => Monoid (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits

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

  • Bits a => Bits (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => FiniteBits (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Arbitrary a => Arbitrary (Iff a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary a => CoArbitrary (Iff a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => Function (Iff a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
newtypenewtype Ior a
#

Monoid under bitwise inclusive OR.

Example1 expression
getIor (Ior 0xab <> Ior 0x12) :: Word8187

Constructors

Instances12Bounded, Enum, Eq, Read, Show, Semigroup, …
  • Bounded a => Bounded (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Semigroup (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Monoid (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => FiniteBits (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Arbitrary a => Arbitrary (Ior a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary a => CoArbitrary (Ior a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => Function (Ior a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
newtypenewtype Xor a
#

Monoid under bitwise XOR.

Example1 expression
getXor (Xor 0xab <> Xor 0x12) :: Word8185

Constructors

Instances12Bounded, Enum, Eq, Read, Show, Semigroup, …
  • Bounded a => Bounded (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Eq a => Eq (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Semigroup (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Monoid (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Bits a => Bits (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • FiniteBits a => FiniteBits (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Arbitrary a => Arbitrary (Xor a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary a => CoArbitrary (Xor a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => Function (Xor a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
datadata Either a b
#

The Either type represents values with two possibilities: a value of type Either a b is either Left a or 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 Either String Int is the type of values which can be either a String or an Int. The Left constructor can be used only on Strings, and the Right constructor can be used only on Ints:

Example6 expressions
let s = Left "foo" :: Either String IntsLeft "foo"let n = Right 3 :: Either String IntnRight 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:

Example4 expressions
let s = Left "foo" :: Either String Intlet n = Right 3 :: Either String Intfmap (*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.

Example3 expressions
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.

Example2 expressions
:{    let parseMultiple :: Either String Int        parseMultiple = do          x <- parseEither '1'          y <- parseEither '2'          return (x + y):}
Example1 expression
parseMultipleRight 3

But the following should fail overall, since the first operation where we attempt to parse 'm' as an Int will fail:

Example2 expressions
:{    let parseMultiple :: Either String Int        parseMultiple = do          x <- parseEither 'm'          y <- parseEither '2'          return (x + y):}
Example1 expression
parseMultipleLeft "parse error"

Constructors

Instances86Bifoldable, Bifoldable1, Bifunctor, Bitraversable, Eq2, Ord2, …
classclass Foldable (t :: Type -> Type) where
#

The Foldable class represents data structures that can be reduced to a summary value one element at a time. Strict left-associative folds are a good fit for space-efficient reduction, while lazy right-associative folds are a good fit for corecursive iteration, or for folds that short-circuit after processing an initial subsequence of the structure's elements.

Instances can be derived automatically by enabling the DeriveFoldable extension. For example, a derived instance for a binary tree might be:

{-# LANGUAGE DeriveFoldable #-}
data Tree a = Empty
            | Leaf a
            | Node (Tree a) a (Tree a)
    deriving Foldable

A more detailed description can be found in the Overview section of Data.Foldable#overview.

For the class laws see the Laws section of Data.Foldable#laws.

Methods

  • fold :: Monoid m => t m -> m

    Given a structure with elements whose type is a Monoid, combine them via the monoid's (<>) operator. This fold is right-associative and lazy in the accumulator. When you need a strict left-associative fold, use foldMap' instead, with id as the map.

    Examples

    Basic usage:

    Example1 expression
    fold [[1, 2, 3], [4, 5], [6], []][1,2,3,4,5,6]
    Example1 expression
    fold $ Node (Leaf (Sum 1)) (Sum 3) (Leaf (Sum 5))Sum {getSum = 9}

    Folds of unbounded structures do not terminate when the monoid's (<>) operator is strict:

    Example1 expression
    fold (repeat Nothing)* Hangs forever *

    Lazy corecursive folds of unbounded structures are fine:

    Example2 expressions
    take 12 $ fold $ map (\i -> [i..i+2]) [0..][0,1,2,1,2,3,2,3,4,3,4,5]sum $ take 4000000 $ fold $ map (\i -> [i..i+2]) [0..]2666668666666
  • foldMap :: Monoid m => (a -> m) -> t a -> m

    Map each element of the structure into a monoid, and combine the results with (<>). This fold is right-associative and lazy in the accumulator. For strict left-associative folds consider foldMap' instead.

    Examples

    Basic usage:

    Example1 expression
    foldMap Sum [1, 3, 5]Sum {getSum = 9}
    Example1 expression
    foldMap Product [1, 3, 5]Product {getProduct = 15}
    Example1 expression
    foldMap (replicate 3) [1, 2, 3][1,1,1,2,2,2,3,3,3]

    When a Monoid's (<>) is lazy in its second argument, foldMap can return a result even from an unbounded structure. For example, lazy accumulation enables Data.ByteString.Builder to efficiently serialise large data structures and produce the output incrementally:

    Example5 expressions
    import qualified Data.ByteString.Lazy as Limport qualified Data.ByteString.Builder as Blet bld :: Int -> B.Builder; bld i = B.intDec i <> B.word8 0x20let lbs = B.toLazyByteString $ foldMap bld [0..]L.take 64 lbs"0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24"
  • foldr :: (a -> b -> b) -> b -> t a -> b

    Right-associative fold of a structure, lazy in the accumulator.

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

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

    Note that since the head of the resulting expression is produced by an application of the operator to the first element of the list, given an operator lazy in its right argument, foldr can produce a terminating expression from an unbounded list.

    For a general Foldable structure this should be semantically identical to,

    foldr f z = foldr f z . toList
    Examples

    Basic usage:

    Example1 expression
    foldr (||) False [False, True, False]True
    Example1 expression
    foldr (||) False []False
    Example1 expression
    foldr (\c acc -> acc ++ [c]) "foo" ['a', 'b', 'c', 'd']"foodcba"
    Infinite structures

    ⚠️ Applying foldr to infinite structures usually doesn't terminate.

    It may still terminate under one of the following conditions:

    • the folding function is short-circuiting

    • the folding function is lazy on its second argument

    Short-circuiting

    (||) short-circuits on True values, so the following terminates because there is a True value finitely far from the left side:

    Example1 expression
    foldr (||) False (True : repeat False)True

    But the following doesn't terminate:

    Example1 expression
    foldr (||) False (repeat False ++ [True])* Hangs forever *
    Laziness in the second argument

    Applying foldr to infinite structures terminates when the operator is lazy in its second argument (the initial accumulator is never used in this case, and so could be left undefined, but [] is more clear):

    Example1 expression
    take 5 $ foldr (\i acc -> i : fmap (+3) acc) [] (repeat 1)[1,4,7,10,13]
  • foldr' :: (a -> b -> b) -> b -> t a -> b

    foldr' is a variant of foldr that performs strict reduction from right to left, i.e. starting with the right-most element. The input structure must be finite, otherwise foldr' runs out of space (diverges).

    If you want a strict right fold in constant space, you need a structure that supports faster than O(n) access to the right-most element, such as Seq from the containers package.

    This method does not run in constant space for structures such as lists that don't support efficient right-to-left iteration and so require O(n) space to perform right-to-left reduction. Use of this method with such a structure is a hint that the chosen structure may be a poor fit for the task at hand. If the order in which the elements are combined is not important, use foldl' instead.

  • foldl :: (b -> a -> b) -> b -> t a -> b

    Left-associative fold of a structure, lazy in the accumulator. This is rarely what you want, but can work well for structures with efficient right-to-left sequencing and an operator that is lazy in its left argument.

    In the case of lists, foldl, when applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:

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

    Note that to produce the outermost application of the operator the entire input list must be traversed. Like all left-associative folds, foldl will diverge if given an infinite list.

    If you want an efficient strict left-fold, you probably want to use foldl' instead of foldl. The reason for this is that the latter does not force the inner results (e.g. z `f` x1 in the above example) before applying them to the operator (e.g. to (`f` x2)). This results in a thunk chain O(n) elements long, which then must be evaluated from the outside-in.

    For a general Foldable structure this should be semantically identical to:

    foldl f z = foldl f z . toList
    Examples

    The first example is a strict fold, which in practice is best performed with foldl'.

    Example1 expression
    foldl (+) 42 [1,2,3,4]52

    Though the result below is lazy, the input is reversed before prepending it to the initial accumulator, so corecursion begins only after traversing the entire input string.

    Example1 expression
    foldl (\acc c -> c : acc) "abcd" "efgh""hgfeabcd"

    A left fold of a structure that is infinite on the right cannot terminate, even when for any finite input the fold just returns the initial accumulator:

    Example1 expression
    foldl (\a _ -> a) 0 $ repeat 1* Hangs forever *

    WARNING: When it comes to lists, you always want to use either foldl' or foldr instead.

  • foldl' :: (b -> a -> b) -> b -> t a -> b

    Left-associative fold of a structure but with strict application of the operator.

    This ensures that each step of the fold is forced to Weak Head Normal Form before being applied, avoiding the collection of thunks that would otherwise occur. This is often what you want to strictly reduce a finite structure to a single strict result (e.g. sum).

    For a general Foldable structure this should be semantically identical to,

    foldl' f z = foldl' f z . toList
  • toList :: t a -> [a]

    List of elements of a structure, from left to right. If the entire list is intended to be reduced via a fold, just fold the structure directly bypassing the list.

    Examples

    Basic usage:

    Example1 expression
    toList Nothing[]
    Example1 expression
    toList (Just 42)[42]
    Example1 expression
    toList (Left "foo")[]
    Example1 expression
    toList (Node (Leaf 5) 17 (Node Empty 12 (Leaf 8)))[5,17,12,8]

    For lists, toList is the identity:

    Example1 expression
    toList [1, 2, 3][1,2,3]
  • null :: t a -> Bool

    Test whether the structure is empty. The default implementation is Left-associative and lazy in both the initial element and the accumulator. Thus optimised for structures where the first element can be accessed in constant time. Structures where this is not the case should have a non-default implementation.

    Examples

    Basic usage:

    Example1 expression
    null []True
    Example1 expression
    null [1]False

    null is expected to terminate even for infinite structures. The default implementation terminates provided the structure is bounded on the left (there is a leftmost element).

    Example1 expression
    null [1..]False
  • elem :: Eq a => a -> t a -> Boolinfix 4

    Does the element occur in the structure?

    Note: elem is often used in infix form.

    Examples

    Basic usage:

    Example1 expression
    3 `elem` []False
    Example1 expression
    3 `elem` [1,2]False
    Example1 expression
    3 `elem` [1,2,3,4,5]True

    For infinite structures, the default implementation of elem terminates if the sought-after value exists at a finite distance from the left side of the structure:

    Example1 expression
    3 `elem` [1..]True
    Example1 expression
    3 `elem` ([4..] ++ [3])* Hangs forever *
  • maximum :: Ord a => t a -> a

    The largest element of a non-empty structure. This function is equivalent to foldr1 max, and its behavior on structures with multiple largest elements depends on the relevant implementation of max. For the default implementation of max (max x y = if x <= y then y else x), structure order is used as a tie-breaker: if there are multiple largest elements, the rightmost of them is chosen (this is equivalent to maximumBy compare).

    This function is non-total and will raise a runtime exception if the structure happens to be empty. A structure that supports random access and maintains its elements in order should provide a specialised implementation to return the maximum in faster than linear time.

    Examples

    Basic usage:

    Example1 expression
    maximum [1..10]10
    Example1 expression
    maximum []*** Exception: Prelude.maximum: empty list
    Example1 expression
    maximum Nothing*** Exception: maximum: empty structure

    WARNING: This function is partial for possibly-empty structures like lists.

  • minimum :: Ord a => t a -> a

    The least element of a non-empty structure. This function is equivalent to foldr1 min, and its behavior on structures with multiple largest elements depends on the relevant implementation of min. For the default implementation of min (min x y = if x <= y then x else y), structure order is used as a tie-breaker: if there are multiple least elements, the leftmost of them is chosen (this is equivalent to minimumBy compare).

    This function is non-total and will raise a runtime exception if the structure happens to be empty. A structure that supports random access and maintains its elements in order should provide a specialised implementation to return the minimum in faster than linear time.

    Examples

    Basic usage:

    Example1 expression
    minimum [1..10]1
    Example1 expression
    minimum []*** Exception: Prelude.minimum: empty list
    Example1 expression
    minimum Nothing*** Exception: minimum: empty structure

    WARNING: This function is partial for possibly-empty structures like lists.

  • sum :: Num a => t a -> a

    The sum function computes the sum of the numbers of a structure.

    Examples

    Basic usage:

    Example1 expression
    sum []0
    Example1 expression
    sum [42]42
    Example1 expression
    sum [1..10]55
    Example1 expression
    sum [4.1, 2.0, 1.7]7.8
    Example1 expression
    sum [1..]* Hangs forever *
Instances107Foldable, …
newtypenewtype Const a (b :: k)
#

The Const functor.

Examples
Example1 expression
fmap (++ "World") (Const "Hello")Const "Hello"

Because we ignore the second type parameter to Const, the Applicative instance, which has (<*>) :: Monoid m => Const m (a -> b) -> Const m a -> Const m b essentially turns into Monoid m => m -> m -> m, which is (<>)

Example1 expression
Const [1, 2, 3] <*> Const [4, 5, 6]Const [1,2,3,4,5,6]

Constructors

Instances80Semigroupoid, Generic1, FoldableWithIndex, FunctorWithIndex, TraversableWithIndex, Bifoldable, …
newtypenewtype Identity a
#

Identity functor and monad. (a non-strict monad)

Examples
Example1 expression
fmap (+1) (Identity 0)Identity 1
Example1 expression
Identity [1, 2, 3] <> Identity [4, 5, 6]Identity [1,2,3,4,5,6]
>>> do
      x <- Identity 10
      y <- Identity (x + 5)
      pure (x + y)
Identity 25

Constructors

Instances79Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
newtypenewtype First a
#

Maybe monoid returning the leftmost non-Nothing value.

First a is isomorphic to Alt Maybe a, but precedes it historically.

Beware that Data.Monoid.First is different from Data.Semigroup.First. The former returns the first non-Nothing, so Data.Monoid.First Nothing <> x = x. The latter simply returns the first value, thus Data.Semigroup.First Nothing <> x = Data.Semigroup.First Nothing.

Examples
Example1 expression
First (Just "hello") <> First Nothing <> First (Just "world")First {getFirst = Just "hello"}
Example1 expression
First Nothing <> memptyFirst {getFirst = Nothing}

Constructors

Instances32Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
newtypenewtype Last a
#

Maybe monoid returning the rightmost non-Nothing value.

Last a is isomorphic to Dual (First a), and thus to Dual (Alt Maybe a)

Data.Semigroup.Last. The former returns the last non-Nothing, so x <> Data.Monoid.Last Nothing = x. The latter simply returns the last value, thus x <> Data.Semigroup.Last Nothing = Data.Semigroup.Last Nothing.

Examples
Example1 expression
Last (Just "hello") <> Last Nothing <> Last (Just "world")Last {getLast = Just "world"}
Example1 expression
Last Nothing <> memptyLast {getLast = Nothing}

Constructors

Instances32Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
newtypenewtype Down a
#

The Down type allows you to reverse sort order conveniently. A value of type Down a contains a value of type a (represented as Down a).

If a has an Ord instance associated with it then comparing two values thus wrapped will give you the opposite of their normal sort order. This is particularly useful when sorting in generalised list comprehensions, as in: then sortWith by Down x.

Example1 expression
compare True FalseGT
Example1 expression
compare (Down True) (Down False)LT

If a has a Bounded instance then the wrapped instance also respects the reversed ordering by exchanging the values of minBound and maxBound.

Example1 expression
minBound :: Int-9223372036854775808
Example1 expression
minBound :: Down IntDown 9223372036854775807

All other instances of Down a behave as they do for a.

Constructors

Instances52Monad, Functor, MonadFix, Applicative, Foldable, Traversable, …
datadata Proxy (t :: k)
#

Proxy is a type that holds no data, but has a phantom parameter of arbitrary type (or even kind). Its use is to provide type information, even though there is no value available of that type (or it may be too costly to create one).

Historically, Proxy :: Proxy a is a safer alternative to the undefined :: a idiom.

Example1 expression
Proxy :: Proxy (Void, Int -> Int)Proxy

Proxy can even hold types of higher kinds,

Example1 expression
Proxy :: Proxy EitherProxy
Example1 expression
Proxy :: Proxy FunctorProxy
Example1 expression
Proxy :: Proxy complicatedStructureProxy
Instances62Generic1, FoldableWithIndex, FunctorWithIndex, TraversableWithIndex, RepeatWithIndex, SemialignWithIndex, …
  • Generic1 ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • FoldableWithIndex Void ProxyDefined in indexed-traversable-0.1.5 · WithIndex
  • FunctorWithIndex Void ProxyDefined in indexed-traversable-0.1.5 · WithIndex
  • TraversableWithIndex Void ProxyDefined in indexed-traversable-0.1.5 · WithIndex
  • RepeatWithIndex Void ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • SemialignWithIndex Void ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • ZipWithIndex Void ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • FilterableWithIndex Void ProxyDefined in witherable-0.5 · Witherable
  • WitherableWithIndex Void ProxyDefined in witherable-0.5 · Witherable
  • Monad ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Functor ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Applicative ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Foldable ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • Alternative ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • MonadPlus ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • MonadZip ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.Zip
  • Eq1 ProxyDefined in base-4.22.0.0 · Data.Functor.Classes
  • Ord1 ProxyDefined in base-4.22.0.0 · Data.Functor.Classes
  • Read1 ProxyDefined in base-4.22.0.0 · Data.Functor.Classes
  • Show1 ProxyDefined in base-4.22.0.0 · Data.Functor.Classes
  • Contravariant ProxyDefined in base-4.22.0.0 · Data.Functor.Contravariant
  • NFData1 ProxyDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Hashable1 ProxyDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • Distributive ProxyDefined in distributive-0.6.3 · Data.Distributive
  • Decidable ProxyDefined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • Divisible ProxyDefined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • Alt ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Apply ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Extend ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Conclude ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Conclude
  • Decide ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Decide
  • Divise ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Divise
  • Plus ProxyDefined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Align ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Semialign ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Unalign ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Repeat ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Unzip ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Zip ProxyDefined in semialign-1.4 · Data.Semialign.Internal
  • Filterable ProxyDefined in witherable-0.5 · Witherable
  • Witherable ProxyDefined in witherable-0.5 · Witherable
  • FromJSON1 ProxyDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON1 ProxyDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Bounded (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Enum (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Eq (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Data t => Data (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Read (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Show (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Ix (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Generic (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Monoid (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • NFData (Proxy a)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Hashable (Proxy a)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • FromJSON (Proxy a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON (Proxy a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • type Rep (Proxy t) = D1 ('MetaData "Proxy" "GHC.Internal.Data.Proxy" "ghc-internal" 'False) (C1 ('MetaCons "Proxy" 'PrefixI 'False) U1)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 Proxy = D1 ('MetaData "Proxy" "GHC.Internal.Data.Proxy" "ghc-internal" 'False) (C1 ('MetaCons "Proxy" 'PrefixI 'False) U1)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
newtypenewtype All
#

Boolean monoid under conjunction (&&).

All x <> All y = All (x && y)
Examples
Example1 expression
All True <> mempty <> All False)All {getAll = False}
Example1 expression
mconcat (map (\x -> All (even x)) [2,4,6,7,8])All {getAll = False}
Example1 expression
All True <> memptyAll {getAll = True}

Constructors

Instances22Bounded, Eq, Data, Ord, Read, Show, …
  • Bounded AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Data AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • NFData AllDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary AllDefined in binary-0.8.9.3 · Data.Binary.Class
  • Arbitrary AllDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary AllDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function AllDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Unbox AllDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON AllDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON AllDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • MVector MVector AllDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector AllDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type Rep All = D1 ('MetaData "All" "GHC.Internal.Data.Semigroup.Internal" "ghc-internal" 'True) (C1 ('MetaCons "All" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAll") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • data MVector s AllDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector AllDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
newtypenewtype Any
#

Boolean monoid under disjunction (||).

Any x <> Any y = Any (x || y)
Examples
Example1 expression
Any True <> mempty <> Any FalseAny {getAny = True}
Example1 expression
mconcat (map (\x -> Any (even x)) [2,4,6,7,8])Any {getAny = True}
Example1 expression
Any False <> memptyAny {getAny = False}

Constructors

Instances22Bounded, Eq, Data, Ord, Read, Show, …
  • Bounded AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Eq AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Data AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Semigroup AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Monoid AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • NFData AnyDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary AnyDefined in binary-0.8.9.3 · Data.Binary.Class
  • Arbitrary AnyDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary AnyDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function AnyDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Unbox AnyDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON AnyDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON AnyDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • MVector MVector AnyDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector AnyDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type Rep Any = D1 ('MetaData "Any" "GHC.Internal.Data.Semigroup.Internal" "ghc-internal" 'True) (C1 ('MetaCons "Any" 'PrefixI 'True) (S1 ('MetaSel ('Just "getAny") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Bool)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • data MVector s AnyDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector AnyDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
classclass IsString a where
#

IsString is used in combination with the -XOverloadedStrings language extension to convert the literals to different string types.

For example, if you use the text package, you can say

{-# LANGUAGE OverloadedStrings  #-}

myText = "hello world" :: Text

Internally, the extension will convert this to the equivalent of

myText = fromString @Text ("hello world" :: String)

Note: You can use fromString in normal code as well, but the usual performance/memory efficiency problems with String apply.

Instances26IsString, …
  • IsString KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • IsString ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • IsString BuilderDefined in bytestring-0.12.2.0 · Data.ByteString.Builder · orphan
  • IsString ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type

    Beware: fromString truncates multi-byte characters to octets. e.g. "枯朶に烏のとまりけり秋の暮" becomes �6k�nh~�Q��n�

  • IsString ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal

    Beware: fromString truncates multi-byte characters to octets. e.g. "枯朶に烏のとまりけり秋の暮" becomes �6k�nh~�Q��n�

  • IsString ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal

    Beware: fromString truncates multi-byte characters to octets. e.g. "枯朶に烏のとまりけり秋の暮" becomes �6k�nh~�Q��n�

  • IsString JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • IsString ByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray
  • IsString SlicedByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray.Sliced
  • IsString DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • IsString CmdSpecDefined in process-1.6.26.1 · System.Process.Common

    construct a ShellCommand from a string literal

  • IsString TextDefined in text-2.1.3 · Data.Text · orphan

    Performs replacement on invalid scalar values:

    Example2 expressions
    :set -XOverloadedStrings"\55555" :: Text"\65533"
  • IsString BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder

    Performs replacement on invalid scalar values:

    Example2 expressions
    :set -XOverloadedStrings"\55555" :: Builder"\65533"
  • IsString TextDefined in text-2.1.3 · Data.Text.Lazy · orphan

    Performs replacement on invalid scalar values:

    Example2 expressions
    :set -XOverloadedStrings"\55555" :: Data.Text.Lazy.Text"\65533"
  • IsString ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal

    Note: Surrogate pairs ([U+D800 .. U+DFFF]) in string literals are replaced by U+FFFD.

    This matches the behaviour of IsString instance for Text.

  • IsString (Encoding' a)Defined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • IsString (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • IsString a => IsString (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.String
  • (IsString a, Hashable a) => IsString (Hashed a)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • a ~ Char => IsString (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • a ~ Char => IsString (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • a ~ Char => IsString (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • a ~ Char => IsString [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.String

    (a ~ Char) context was introduced in 4.9.0.0

  • a ~ r => IsString (Format r a)Defined in formatting-7.2.0 · Formatting.Internal

    Useful instance for writing format string. With this you can write "Foo" instead of now "Foo!".

  • IsString a => IsString (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.String
  • IsString a => IsString (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
classclass (Functor t, Foldable t) => Traversable (t :: Type -> Type) where
#

Functors representing data structures that can be transformed to structures of the same shape by performing an Applicative (or, therefore, Monad) action on each element from left to right.

A more detailed description of what same shape means, the various methods, how traversals are constructed, and example advanced use-cases can be found in the Overview section of Data.Traversable#overview.

For the class laws see the Laws section of Data.Traversable#laws.

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_.

    Examples

    Basic usage:

    In the first two examples we show each evaluated action mapping to the output structure.

    Example1 expression
    traverse Just [1,2,3,4]Just [1,2,3,4]
    Example1 expression
    traverse id [Right 1, Right 2, Right 3, Right 4]Right [1,2,3,4]

    In the next examples, we show that Nothing and Left values short circuit the created structure.

    Example1 expression
    traverse (const Nothing) [1,2,3,4]Nothing
    Example1 expression
    traverse (\x -> if odd x then Just x else Nothing)  [1,2,3,4]Nothing
    Example1 expression
    traverse id [Right 1, Right 2, Right 3, Right 4, Left 0]Left 0
  • sequenceA :: Applicative f => t (f a) -> f (t a)

    Evaluate each action in the structure from left to right, and collect the results. For a version that ignores the results see sequenceA_.

    Examples

    Basic usage:

    For the first two examples we show sequenceA fully evaluating a a structure and collecting the results.

    Example1 expression
    sequenceA [Just 1, Just 2, Just 3]Just [1,2,3]
    Example1 expression
    sequenceA [Right 1, Right 2, Right 3]Right [1,2,3]

    The next two example show Nothing and Just will short circuit the resulting structure if present in the input. For more context, check the Traversable instances for Either and Maybe.

    Example1 expression
    sequenceA [Just 1, Just 2, Just 3, Nothing]Nothing
    Example1 expression
    sequenceA [Right 1, Right 2, Right 3, Left 4]Left 4
  • mapM :: Monad m => (a -> m b) -> t a -> m (t b)

    Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results. For a version that ignores the results see Data.Foldable.mapM_.

    Examples

    mapM is literally a traverse with a type signature restricted to Monad. Its implementation may be more efficient due to additional power of Monad.

  • sequence :: Monad m => t (m a) -> m (t a)

    Evaluate each monadic action in the structure from left to right, and collect the results. For a version that ignores the results see Data.Foldable.sequence_.

    Examples

    Basic usage:

    The first two examples are instances where the input and and output of sequence are isomorphic.

    Example1 expression
    sequence $ Right [1,2,3,4][Right 1,Right 2,Right 3,Right 4]
    Example1 expression
    sequence $ [Right 1,Right 2,Right 3,Right 4]Right [1,2,3,4]

    The following examples demonstrate short circuit behavior for sequence.

    Example1 expression
    sequence $ Left [1,2,3,4]Left [1,2,3,4]
    Example1 expression
    sequence $ [Left 0, Right 1,Right 2,Right 3,Right 4]Left 0
Instances102Traversable, …
datadata Coercion (a :: k) (b :: k) where
#

Representational equality. If Coercion a b is inhabited by some terminating value, then the type a has the same underlying representation as the type b.

To use this equality in practice, pattern-match on the Coercion a b to get out the Coercible a b instance, and then use coerce to apply it.

Constructors

Instances11Category, Groupoid, Semigroupoid, TestCoercion, Bounded, Enum, …
datadata (:~:) (a :: k) (b :: k) where
#

Propositional equality. If a :~: b is inhabited by some terminating value, then the type a is the same as the type b. To use this equality in practice, pattern-match on the a :~: b to get out the Refl constructor; in the body of the pattern-match, the compiler knows that a ~ b.

Constructors

Instances15Category, Groupoid, Semigroupoid, TestCoercion, TestEquality, NFData2, …
  • Category (:~:)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Category
  • Groupoid (:~:)Defined in semigroupoids-6.0.2 · Data.Groupoid
  • Semigroupoid (:~:)Defined in semigroupoids-6.0.2 · Data.Semigroupoid
  • TestCoercion ((:~:) a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • TestEquality ((:~:) a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • NFData2 (:~:)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • NFData1 ((:~:) a)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • a ~ b => Bounded (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • a ~ b => Enum (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Eq (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • (a ~ b, Data a) => Data (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • a ~ b => Read (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Show (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • NFData (a :~: b)Defined in deepseq-1.5.1.0 · Control.DeepSeq
familytype family (==) (a :: k) (b :: k) :: Bool where
#

A type family to compute Boolean equality.

Equations

classclass Typeable (a :: k) where
#

The class Typeable allows a concrete representation of a type to be calculated.

classclass Bounded a where
#

The Bounded class is used to name the upper and lower limits of a type. Ord is not a superclass of Bounded since types that are not totally ordered may also have upper and lower bounds.

The Bounded class may be derived for any enumeration type; minBound is the first constructor listed in the data declaration and maxBound is the last. Bounded may also be derived for single-constructor datatypes whose constituent types are in Bounded.

Methods

Instances119Bounded, …
classclass Enum a where
#

Class Enum defines operations on sequentially ordered types.

The enumFrom... methods are used in Haskell's translation of arithmetic sequences.

Instances of Enum may be derived for any enumeration type (types whose constructors have no fields). The nullary constructors are assumed to be numbered left-to-right by fromEnum from 0 through n-1. See Chapter 10 of the Haskell Report for more details.

For any type that is an instance of class Bounded as well as Enum, the following should hold:

   enumFrom     x   = enumFromTo     x maxBound
   enumFromThen x y = enumFromThenTo x y bound
     where
       bound | fromEnum y >= fromEnum x = maxBound
             | otherwise                = minBound

Methods

  • succ :: a -> a

    Successor of a value. For numeric types, succ adds 1.

  • pred :: a -> a

    Predecessor of a value. For numeric types, pred subtracts 1.

  • toEnum :: Int -> a

    Convert from an Int.

  • fromEnum :: a -> Int

    Convert to an Int. It is implementation-dependent what fromEnum returns when applied to a value that is too large to fit in an Int.

  • enumFrom :: a -> [a]

    Used in Haskell's translation of [n..] with [n..] = enumFrom n, a possible implementation being enumFrom n = n : enumFrom (succ n).

    Examples
    • enumFrom 4 :: [Integer] = [4,5,6,7,...]
    • enumFrom 6 :: [Int] = [6,7,8,9,...,maxBound :: Int]
  • enumFromThen :: a -> a -> [a]

    Used in Haskell's translation of [n,n'..] with [n,n'..] = enumFromThen n n', a possible implementation being enumFromThen n n' = n : n' : worker (f x) (f x n'), worker s v = v : worker s (s v), x = fromEnum n' - fromEnum n and

      f n y
        | n > 0 = f (n - 1) (succ y)
        | n < 0 = f (n + 1) (pred y)
        | otherwise = y
      
    Examples
    • enumFromThen 4 6 :: [Integer] = [4,6,8,10...]
    • enumFromThen 6 2 :: [Int] = [6,2,-2,-6,...,minBound :: Int]
  • enumFromTo :: a -> a -> [a]

    Used in Haskell's translation of [n..m] with [n..m] = enumFromTo n m, a possible implementation being

      enumFromTo n m
         | n <= m = n : enumFromTo (succ n) m
         | otherwise = []
      
    Examples
    • enumFromTo 6 10 :: [Int] = [6,7,8,9,10]
    • enumFromTo 42 1 :: [Integer] = []
  • enumFromThenTo :: a -> a -> a -> [a]

    Used in Haskell's translation of [n,n'..m] with [n,n'..m] = enumFromThenTo n n' m, a possible implementation being enumFromThenTo n n' m = worker (f x) (c x) n m, x = fromEnum n' - fromEnum n, c x = bool (>=) ((x 0)

      f n y
         | n > 0 = f (n - 1) (succ y)
         | n < 0 = f (n + 1) (pred y)
         | otherwise = y
      

    and

      worker s c v m
         | c v m = v : worker s c (s v) m
         | otherwise = []
      
    Examples
    • enumFromThenTo 4 2 -6 :: [Integer] = [4,2,0,-2,-4,-6]
    • enumFromThenTo 6 8 2 :: [Int] = []
Instances154Enum, …
  • Enum ArityDefined in aeson-2.2.5.1 · Data.Aeson.TH
  • Enum IoManagerFlagDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Enum Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Enum TokenTypeDefined in cborg-0.2.10.0 · Codec.CBOR.Decoding
  • Enum ClockDefined in clock-0.8.4 · System.Clock
  • Enum TimeSpecDefined in clock-0.8.4 · System.Clock
  • Enum SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Enum FileTypeDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Enum XdgDirectoryDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Enum XdgDirectoryListDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Enum IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Enum ClosureTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.ClosureTypes
  • Enum CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Enum IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Enum WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Enum AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Enum DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Enum SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Enum SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Enum HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Enum SeekModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Enum IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Enum IoSubSystemDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.SubSystem
  • Enum Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum ExtensionDefined in ghc-internal-9.1401.0 · GHC.Internal.LanguageExtensions
  • Enum DoCostCentresDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Enum DoHeapProfileDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Enum DoTraceDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Enum GiveGCStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Enum IoManagerFlagDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Enum ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Enum WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Enum ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Enum WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Enum CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Enum BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    fromEnum just truncates its argument, beware of all sorts of overflows.

    List generators have extremely peculiar behavior, mandated by Haskell Report 2010:

    Example1 expression
    [0..1.5][0.0,1.0,2.0]
  • Enum FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    fromEnum just truncates its argument, beware of all sorts of overflows.

    List generators have extremely peculiar behavior, mandated by Haskell Report 2010:

    Example1 expression
    [0..1.5 :: Float][0.0,1.0,2.0]
  • Enum IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum LevityDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum VecCountDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum VecElemDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Unicode
  • Enum Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum MessageDefined in parsec-3.1.18.0 · Text.Parsec.Error
  • Enum CardinalityDefined in random-1.3.1 · System.Random.GFinite

    This is needed only as a superclass of Integral.

  • Enum I8Defined in text-2.1.3 · Data.Text.Foreign
  • Enum FPFormatDefined in text-2.1.3 · Data.Text.Lazy.Builder.RealFloat
  • Enum DayDefined in time-1.15 · Data.Time.Calendar.Days
  • Enum MonthDefined in time-1.15 · Data.Time.Calendar.Month
  • Enum QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Enum QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter

    maps Q1..Q4 to 1..4

  • Enum DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week

    "Circular", so for example [Tuesday ..] gives an endless sequence. Also: fromEnum gives [1 .. 7] for [Monday .. Sunday], and toEnum performs mod 7 to give a cycle of days.

  • Enum DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Enum NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Enum StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Enum StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Enum BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Enum ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum a => Enum (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Negative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (NonNegative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (NonPositive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (NonZero a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Positive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Enum a => Enum (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Enum a => Enum (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Enum a => Enum (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Enum a => Enum (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Enum a => Enum (WrappedMonoid a)Defined in base-4.22.0.0 · Data.Semigroup
  • Enum a => Enum (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Enum a => Enum (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Enum a => Enum (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Enum a => Enum (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Enum a => Enum (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Integral a => Enum (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • (Enum a, Bounded a, Eq a) => Enum (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord

    Swaps succ and pred of the underlying type.

  • Enum (Fixed a)Defined in base-4.22.0.0 · Data.Fixed

    Recall that, for numeric types, succ and pred typically add and subtract 1, respectively. This is not true in the case of Fixed, whose successor and predecessor functions intuitively return the "next" and "previous" values in the enumeration. The results of these functions thus depend on the resolution of the Fixed value. For example, when enumerating values of resolution 10^-3 of type Milli = Fixed E3,

    Example1 expression
    succ (0.000 :: Milli)0.001

    and likewise

    Example1 expression
    pred (0.000 :: Milli)-0.001

    In other words, succ and pred increment and decrement a fixed-precision value by the least amount such that the value's resolution is unchanged. For example, 10^-12 is the smallest (positive) amount that can be added to a value of type Pico = Fixed E12 without changing its resolution, and so

    Example1 expression
    succ (0.000000000000 :: Pico)0.000000000001

    and similarly

    Example1 expression
    pred (0.000000000000 :: Pico)-0.000000000001

    This is worth bearing in mind when defining Fixed arithmetic sequences. In particular, you may be forgiven for thinking the sequence

      [1..10] :: [Pico]
    

    evaluates to [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] :: [Pico].

    However, this is not true. On the contrary, similarly to the above implementations of succ and pred, enumFromTo :: Pico -> Pico -> [Pico] has a "step size" of 10^-12. Hence, the list [1..10] :: [Pico] has the form

      [1.000000000000, 1.00000000001, 1.00000000002, ..., 10.000000000000]
    

    and contains 9 * 10^12 + 1 values.

  • Enum (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Enum (bi a b) => Enum (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Enum (f a) => Enum (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Enum (f a) => Enum (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Enum a => Enum (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Enum a => Enum (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Coercible a b => Enum (Coercion a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • a ~ b => Enum (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • a ~~ b => Enum (a :~~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Enum (f (g a)) => Enum (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
datadata ErrorCall
#

This is thrown when the user calls error. The String is the argument given to error.

Historically, there was a second String for the location, but it was subsumed by the backtrace mechanisms (since base-4.22).

Constructors

Instances4Eq, Ord, Show, Exception
  • Eq ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Ord ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Show ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Exception ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
patternpattern ErrorCallWithLocation :: String -> String -> ErrorCall
#

Deprecated. ErrorCallWithLocation has been deprecated in favour of ErrorCall (which does not have a location). Backtraces are now handled by the backtrace exception mechanisms exclusively.

classclass (Typeable e, Show e) => Exception e where
#

Any type that you wish to throw or catch as an exception must be an instance of the Exception class. The simplest case is a new exception type directly below the root:

data MyException = ThisException | ThatException
    deriving Show

instance Exception MyException

The default method definitions in the Exception class do what we need in this case. You can now throw and catch ThisException and ThatException as exceptions:

*Main> throw ThisException `catch` \e -> putStrLn ("Caught " ++ show (e :: MyException))
Caught ThisException

In more complicated examples, you may wish to define a whole hierarchy of exceptions:

---------------------------------------------------------------------
-- Make the root exception type for all the exceptions in a compiler

data SomeCompilerException = forall e . Exception e => SomeCompilerException e

instance Show SomeCompilerException where
    show (SomeCompilerException e) = show e

instance Exception SomeCompilerException

compilerExceptionToException :: Exception e => e -> SomeException
compilerExceptionToException = toException . SomeCompilerException

compilerExceptionFromException :: Exception e => SomeException -> Maybe e
compilerExceptionFromException x = do
    SomeCompilerException a <- fromException x
    cast a

---------------------------------------------------------------------
-- Make a subhierarchy for exceptions in the frontend of the compiler

data SomeFrontendException = forall e . Exception e => SomeFrontendException e

instance Show SomeFrontendException where
    show (SomeFrontendException e) = show e

instance Exception SomeFrontendException where
    toException = compilerExceptionToException
    fromException = compilerExceptionFromException

frontendExceptionToException :: Exception e => e -> SomeException
frontendExceptionToException = toException . SomeFrontendException

frontendExceptionFromException :: Exception e => SomeException -> Maybe e
frontendExceptionFromException x = do
    SomeFrontendException a <- fromException x
    cast a

---------------------------------------------------------------------
-- Make an exception type for a particular frontend compiler exception

data MismatchedParentheses = MismatchedParentheses
    deriving Show

instance Exception MismatchedParentheses where
    toException   = frontendExceptionToException
    fromException = frontendExceptionFromException

We can now catch a MismatchedParentheses exception as MismatchedParentheses, SomeFrontendException or SomeCompilerException, but not other types, e.g. IOException:

*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: MismatchedParentheses))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeFrontendException))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: SomeCompilerException))
Caught MismatchedParentheses
*Main> throw MismatchedParentheses `catch` \e -> putStrLn ("Caught " ++ show (e :: IOException))
*** Exception: MismatchedParentheses

Methods

Instances41Exception, …
methodsqrt :: a -> a
#
methodisNaN :: a -> Bool
#

True if the argument is an IEEE "not-a-number" (NaN) value

newtypenewtype ZipList a
#

Lists, but with an Applicative functor based on zipping.

Examples

In contrast to the Applicative for GHC.List.List:

Example1 expression
(+) <$> [1, 2, 3] <*> [4, 5, 6][5,6,7,6,7,8,7,8,9]

The Applicative instance of ZipList applies the operation by pairing up the elements, analogous to zipWithN

Example1 expression
(+) <$> ZipList [1, 2, 3] <*> ZipList [4, 5, 6]ZipList {getZipList = [5,7,9]}
Example1 expression
(,,,) <$> ZipList [1, 2] <*> ZipList [3, 4] <*> ZipList [5, 6] <*> ZipList [7, 8]ZipList {getZipList = [(1,3,5,7),(2,4,6,8)]}
Example1 expression
ZipList [(+1), (^2), (/ 2)] <*> ZipList [5, 5, 5]ZipList {getZipList = [6.0,25.0,2.5]}

Constructors

Instances39Functor, Applicative, Foldable, Traversable, Alternative, NFData1, …
datadata (:*:) (f :: k -> Type) (g :: k -> Type) (p :: k)
#

Products: encode multiple arguments to constructors

Constructors

  • f p :*: g pinfixr 6
Instances77RecordToPairs, GToJSON', Generic1, GNFData, GBinaryGet, GBinaryPut, …
datadata (:+:) (f :: k -> Type) (g :: k -> Type) (p :: k)
#

Sums: encode choice between constructors

Constructors

Instances63SumToJSON', GToJSON', TaggedObject, Generic1, GNFData, GBinaryGet, …
  • (SumToJSON' s enc arity a, SumToJSON' s enc arity b) => SumToJSON' s enc arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (AllNullary (a :+: b) allNullary, SumToJSON enc arity (a :+: b) allNullary) => GToJSON' enc arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (TaggedObject enc arity a, TaggedObject enc arity b) => TaggedObject enc arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Generic1 (f :+: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (GNFData arity a, GNFData arity b) => GNFData arity (a :+: b)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • (GSumGet a, GSumGet b, SumSize a, SumSize b) => GBinaryGet (a :+: b)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • (GSumPut a, GSumPut b, SumSize a, SumSize b) => GBinaryPut (a :+: b)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • (GEq1 v f, GEq1 v g) => GEq1 v (f :+: g)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GOrd1 v f, GOrd1 v g) => GOrd1 v (f :+: g)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GRead1 v f, GRead1 v g) => GRead1 v (f :+: g)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GShow1 v f, GShow1 v g) => GShow1 v (f :+: g)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (RecursivelyShrink f, RecursivelyShrink g) => RecursivelyShrink (f :+: g)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • (GCoArbitrary f, GCoArbitrary g) => GCoArbitrary (f :+: g)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • (GFunction f, GFunction g) => GFunction (f :+: g)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • (GSum arity a, GSum arity b) => GHashable arity (a :+: b)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances · orphan
  • (GSum arity a, GSum arity b) => GSum arity (a :+: b)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances
  • (FromPair arity a, FromPair arity b) => FromPair arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (FromTaggedObject arity a, FromTaggedObject arity b) => FromTaggedObject arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (FromUntaggedValue arity a, FromUntaggedValue arity b) => FromUntaggedValue arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (AllNullary (a :+: b) allNullary, ParseSum arity (a :+: b) allNullary) => GFromJSON' arity (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON

    Multiple constructors.

  • (SumFromString a, SumFromString b) => SumFromString (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (GetConName a, GetConName b) => GetConName (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (FoldableWithIndex i f, FoldableWithIndex j g) => FoldableWithIndex (Either i j) (f :+: g)Defined in indexed-traversable-0.1.5 · WithIndex
  • (FunctorWithIndex i f, FunctorWithIndex j g) => FunctorWithIndex (Either i j) (f :+: g)Defined in indexed-traversable-0.1.5 · WithIndex
  • (TraversableWithIndex i f, TraversableWithIndex j g) => TraversableWithIndex (Either i j) (f :+: g)Defined in indexed-traversable-0.1.5 · WithIndex
  • (Functor f, Functor g) => Functor (f :+: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Foldable f, Foldable g) => Foldable (f :+: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • (Traversable f, Traversable g) => Traversable (f :+: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • (Foldable1 f, Foldable1 g) => Foldable1 (f :+: g)Defined in base-4.22.0.0 · Data.Foldable1
  • (Eq1 f, Eq1 g) => Eq1 (f :+: g)Defined in base-4.22.0.0 · Data.Functor.Classes
  • (Ord1 f, Ord1 g) => Ord1 (f :+: g)Defined in base-4.22.0.0 · Data.Functor.Classes
  • (Read1 f, Read1 g) => Read1 (f :+: g)Defined in base-4.22.0.0 · Data.Functor.Classes
  • (Show1 f, Show1 g) => Show1 (f :+: g)Defined in base-4.22.0.0 · Data.Functor.Classes
  • (Contravariant f, Contravariant g) => Contravariant (f :+: g)Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • (GSumGet a, GSumGet b) => GSumGet (a :+: b)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • (GSumPut a, GSumPut b) => GSumPut (a :+: b)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • (SumSize a, SumSize b) => SumSize (a :+: b)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • IsNullaryDataType (f :+: g)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GFinite f, GFinite g) => GUniform (f :+: g)Defined in random-1.3.1 · System.Random.Internal
  • (GFinite a, GFinite b) => GFinite (a :+: b)Defined in random-1.3.1 · System.Random.GFinite
  • (SumSize a, SumSize b) => SumSize (a :+: b)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances
  • (GG f, GG g) => GG (f :+: g)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • (Extend f, Extend g) => Extend (f :+: g)Defined in semigroupoids-6.0.2 · Data.Functor.Extend
  • (Traversable1 f, Traversable1 g) => Traversable1 (f :+: g)Defined in semigroupoids-6.0.2 · Data.Semigroup.Traversable.Class
  • (Filterable f, Filterable g) => Filterable (f :+: g)Defined in witherable-0.5 · Witherable
  • (Witherable f, Witherable g) => Witherable (f :+: g)Defined in witherable-0.5 · Witherable
  • (ConstructorNames a, ConstructorNames b) => ConstructorNames (a :+: b)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (GSubtermsIncl f a, GSubtermsIncl g a) => GSubterms (f :+: g) aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • (GSubtermsIncl f a, GSubtermsIncl g a) => GSubtermsIncl (f :+: g) aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • (AllNullary a allNullaryL, AllNullary b allNullaryR, And allNullaryL allNullaryR allNullary) => AllNullary (a :+: b) allNullaryDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • (Eq (f p), Eq (g p)) => Eq ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Typeable f, Typeable g, Data p, Data (f p), Data (g p)) => Data ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • (Ord (f p), Ord (g p)) => Ord ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Read (f p), Read (g p)) => Read ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Show (f p), Show (g p)) => Show ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (GEq (f p), GEq (g p)) => GEq ((:+:) f g p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GOrd (f p), GOrd (g p)) => GOrd ((:+:) f g p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GRead (f p), GRead (g p)) => GRead ((:+:) f g p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GShow (f p), GShow (g p)) => GShow ((:+:) f g p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • type Rep ((:+:) f g p) = D1 ('MetaData ":+:" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "L1" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f p))) :+: C1 ('MetaCons "R1" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (g p))))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 (f :+: g) = D1 ('MetaData ":+:" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "L1" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f)) :+: C1 ('MetaCons "R1" 'PrefixI 'False) (S1 ('MetaSel 'Nothing 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 g)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Swizzle (f :+: g) = Swizzle f ::+: Swizzle gDefined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
newtypenewtype (:.:) (f :: k2 -> Type) (g :: k1 -> k2) (p :: k1)
#

Composition of functors

Constructors

Instances55GToJSON', Generic1, GNFData, GEq1, GOrd1, GRead1Con, …
datadata Associativity
#

Datatype to represent the associativity of a constructor

Instances16Bounded, Enum, Eq, Data, Ord, Read, …
typetype C1 = M1 C
#

Type synonym for encoding meta-information for constructors

Instances26SumToJSON', GToJSON', TaggedObject, GRead1, GShow1, GSum, …
  • ConsToJSON enc arity a => SumToJSON' UntaggedValue enc arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (GToJSON' Encoding arity a, ConsToJSON Encoding arity a, Constructor c) => SumToJSON' TwoElemArray Encoding arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (GToJSON' Value arity a, ConsToJSON Value arity a, Constructor c) => SumToJSON' TwoElemArray Value arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (GToJSON' enc arity a, ConsToJSON enc arity a, FromPairs enc pairs, KeyValuePair enc pairs, Constructor c) => SumToJSON' ObjectWithSingleField enc arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (Constructor c, IsString enc) => SumToJSON' UntaggedValue enc arity (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ConsToJSON enc arity a => GToJSON' enc arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (ConsToJSON enc arity a, AllNullary (C1 c a) allNullary, SumToJSON enc arity (C1 c a) allNullary) => GToJSON' enc arity (D1 d (C1 c a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (IsRecord a isRecord, TaggedObject' enc pairs arity a isRecord, FromPairs enc pairs, IsString enc, KeyValuePair enc pairs, Constructor c) => TaggedObject enc arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (Constructor c, GRead1Con v f, IsNullaryCon f) => GRead1 v (C1 c f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (Constructor c, GShow1Con v f, IsNullaryCon f) => GShow1 v (C1 c f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GHashable arity a => GSum arity (C1 c a)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances
  • (Constructor c, ConsFromJSON arity a) => FromPair arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (IsRecord f isRecord, FromTaggedObject' arity f isRecord, Constructor c) => FromTaggedObject arity (C1 c f)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Constructor c => FromUntaggedValue arity (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (ConsFromJSON arity a, Constructor c) => FromUntaggedValue arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (ConsFromJSON arity a, AllNullary (C1 c a) allNullary, ParseSum arity (C1 c a) allNullary, Constructor c) => GFromJSON' arity (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON

    Single constructor.

  • Constructor c => SumFromString (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Constructor c => GetConName (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • GBinaryGet a => GSumGet (C1 c a)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • GBinaryPut a => GSumPut (C1 c a)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • SumSize (C1 c a)Defined in binary-0.8.9.3 · Data.Binary.Generic
  • IsNullaryDataType (C1 c f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • SumSize (C1 c a)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances
  • Constructor c => ConstructorNames (C1 c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Constructor c, GReadCon (f p), IsNullaryCon f) => GRead (C1 c f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (Constructor c, GShowCon (f p), IsNullaryCon f) => GShow (C1 c f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
classclass Constructor (c :: k) where
#

Class for datatypes that represent data constructors

Methods

Instances1Constructor
typetype D1 = M1 D
#

Type synonym for encoding meta-information for datatypes

Instances9GToJSON', GRead1, GShow1, GFromJSON, SumFromString, GetConName, …
  • (ConsToJSON enc arity a, AllNullary (C1 c a) allNullary, SumToJSON enc arity (C1 c a) allNullary) => GToJSON' enc arity (D1 d (C1 c a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (GRead1 v f, IsNullaryDataType f) => GRead1 v (D1 d f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShow1 v f => GShow1 v (D1 d f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (GFromJSON' arity a, Datatype d) => GFromJSON arity (D1 d a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • SumFromString a => SumFromString (D1 d a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • GetConName a => GetConName (D1 d a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ConstructorNames a => ConstructorNames (D1 d a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (GRead (f p), IsNullaryDataType f) => GRead (D1 d f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShow (f p) => GShow (D1 d f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
classclass Datatype (d :: k) where
#

Class for datatypes that represent datatypes

Methods

  • datatypeName :: t d f a -> [Char]

    The name of the datatype (unqualified)

  • moduleName :: t d f a -> [Char]

    The fully-qualified name of the module where the type is declared

  • packageName :: t d f a -> [Char]

    The package name of the module where the type is declared

  • isNewtype :: t d f a -> Bool

    Marks if the datatype is actually a newtype

Instances1Datatype
datadata Fixity
#

Datatype to represent the fixity of a constructor. An infix | declaration directly corresponds to an application of Infix.

Instances7Eq, Data, Ord, Read, Show, Generic, …
datadata FixityI
#

This variant of Fixity appears at the type level.

Instances5SingKind, SingI, DemoteRep, Sing
  • SingKind FixityIDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • SingI 'PrefixIDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (SingI a, KnownNat n) => SingI ('InfixI a n)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type DemoteRep FixityI = FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data SingDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
classclass Generic a where
#

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 ≡ Prelude.id
to . from ≡ Prelude.id

Associated types

  • type family Rep a :: Type -> Type

    Generic representation type

Methods

  • from :: a -> Rep a x

    Convert from the datatype to its representation

  • to :: Rep a x -> a

    Convert from the representation to the datatype

Instances270Generic, …
  • Generic ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Generic CCFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic ConcFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic DebugFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic DoCostCentresDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic DoHeapProfileDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic DoTraceDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic GCFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic GiveGCStatsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic HpcFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic MiscFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic ParFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic ProfFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic RTSFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic TickyFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic TraceFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Generic GCDetailsDefined in base-4.22.0.0 · GHC.Stats
  • Generic RTSStatsDefined in base-4.22.0.0 · GHC.Stats
  • Generic ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Generic ClockDefined in clock-0.8.4 · System.Clock
  • Generic TimeSpecDefined in clock-0.8.4 · System.Clock
  • Generic SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Generic VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Generic ClosureTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.ClosureTypes
  • Generic AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic VersionDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Version
  • Generic FingerprintDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic ForeignSrcLangDefined in ghc-internal-9.1401.0 · GHC.Internal.ForeignSrcLang
  • Generic AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic PrimTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic TsoFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic WhatNextDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic WhyBlockedDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic StgInfoTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Generic CostCentreDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic CostCentreStackDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic IndexTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic StgTSOProfInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Generic ExitCodeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Generic ExtensionDefined in ghc-internal-9.1401.0 · GHC.Internal.LanguageExtensions
  • Generic CCFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic ConcFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic DebugFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic DoCostCentresDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic DoHeapProfileDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic DoTraceDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic GCFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic GiveGCStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic HpcFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic MiscFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic ParFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic ProfFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic RTSFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic TickyFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic TraceFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Generic SrcLocDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic GCDetailsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Generic RTSStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Generic AnnLookupDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic AnnTargetDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic BangDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic BndrVisDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic BodyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic BytesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic CallconvDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ConDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic DecDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic DerivClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic DerivStrategyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic DocLocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ExpDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic FamilyResultSigDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic FixityDirectionDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ForeignDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic FunDepDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic GuardDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic InfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic InjectivityAnnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic InlineDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic LitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic LocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic MatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ModNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic ModuleInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic NameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic NameFlavourDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic NameSpaceDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic NamespaceSpecifierDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic OccNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic OverlapDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PatDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PatSynArgsDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PatSynDirDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PhasesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PkgNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic PragmaDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic RangeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic RoleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic RuleBndrDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic RuleMatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic SafetyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic SpecificityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic StmtDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic TyLitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic TySynEqnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic TypeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic TypeFamilyHeadDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Generic URIDefined in network-uri-2.6.4.2 · Network.URI
  • Generic URIAuthDefined in network-uri-2.6.4.2 · Network.URI
  • Generic OsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic PosixCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic WindowsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Generic ModeDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic StyleDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic TextDetailsDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Generic ConstructorInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic ConstructorVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic DatatypeInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic DatatypeVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic FieldStrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic StrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic UnpackednessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Generic CalendarDiffDaysDefined in time-1.15 · Data.Time.Calendar.CalendarDiffDays
  • Generic DayDefined in time-1.15 · Data.Time.Calendar.Days
  • Generic MonthDefined in time-1.15 · Data.Time.Calendar.Month
  • Generic QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Generic QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Generic DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week
  • Generic SystemTimeDefined in time-1.15 · Data.Time.Clock.Internal.SystemTime
  • Generic UTCTimeDefined in time-1.15 · Data.Time.Clock.Internal.UTCTime
  • Generic UniversalTimeDefined in time-1.15 · Data.Time.Clock.Internal.UniversalTime
  • Generic CalendarDiffTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.CalendarDiffTime
  • Generic LocalTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.LocalTime
  • Generic TimeOfDayDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeOfDay
  • Generic TimeZoneDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeZone
  • Generic ZonedTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.ZonedTime
  • Generic ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Generic (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (SCC vertex)Defined in containers-0.8 · Data.Graph
  • Generic (Digit a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (Elem a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (FingerTree a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (Node a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Generic (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Generic (Tree a)Defined in containers-0.8 · Data.Tree
  • Generic (Fix f)Defined in data-fix-0.3.4 · Data.Fix
  • Generic (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Generic (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic (Endo a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic (ZipList a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Generic (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (GenClosure b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic (GenStackField b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic (GenStackFrame b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic (GenStgStackClosure b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Generic (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (TyVarBndr flag)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Generic (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Generic (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Generic (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (WrappedMonad m a)Defined in base-4.22.0.0 · Control.Applicative
  • Generic (Arg a b)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • Generic (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • Generic (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • Generic (These a b)Defined in these-1.2.1 · Data.These
  • Generic (Lift f a)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • Generic (MaybeT m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • Generic (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (WrappedArrow a b c)Defined in base-4.22.0.0 · Control.Applicative
  • Generic (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Generic (Fix p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Fix
  • Generic (Join p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Join
  • Generic (Kleisli m a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Arrow
  • Generic (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Generic (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Char p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Int p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Word p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec (Ptr ()) p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Tagged s b)Defined in tagged-0.8.11 · Data.Tagged
  • Generic (These1 f g a)Defined in these-1.2.1 · Data.Functor.These
  • Generic (Backwards f a)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • Generic (AccumT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Accum
  • Generic (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • Generic (IdentityT f a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • Generic (ReaderT r m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Reader
  • Generic (SelectT r m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Select
  • Generic (StateT s m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.Lazy
  • Generic (StateT s m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.State.Strict
  • Generic (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.CPS
  • Generic (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • Generic (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • Generic (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Generic (Reverse f a)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • Generic (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • Generic (Sum f g a)Defined in base-4.22.0.0 · Data.Functor.Sum
  • Generic (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (ContT r m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Cont
  • Generic ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Generic (Clown f a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Generic (Flip p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Flip
  • Generic (Joker g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Generic (WrappedBifunctor p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Generic (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (RWST r w s m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.CPS
  • Generic (RWST r w s m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.Lazy
  • Generic (RWST r w s m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.RWS.Strict
  • Generic ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Product f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • Generic (Sum p q a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • Generic (a, b, c, d, e, f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Tannen f p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • Generic (a, b, c, d, e, f, g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (Biff p f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • Generic (a, b, c, d, e, f, g, h, i)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
classclass Generic1 (f :: k -> Type) where
#

Representable types of kind * -> * (or kind k -> *, when PolyKinds is enabled). This class is derivable in GHC with the DeriveGeneric flag on.

A Generic1 instance must satisfy the following laws:

from1 . to1 ≡ Prelude.id
to1 . from1 ≡ Prelude.id
Instances91Generic1, …
  • Generic1 ComplexDefined in base-4.22.0.0 · Data.Complex
  • Generic1 FirstDefined in base-4.22.0.0 · Data.Semigroup
  • Generic1 LastDefined in base-4.22.0.0 · Data.Semigroup
  • Generic1 MaxDefined in base-4.22.0.0 · Data.Semigroup
  • Generic1 MinDefined in base-4.22.0.0 · Data.Semigroup
  • Generic1 WrappedMonoidDefined in base-4.22.0.0 · Data.Semigroup
  • Generic1 SCCDefined in containers-0.8 · Data.Graph
  • Generic1 DigitDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 ElemDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 FingerTreeDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 NodeDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 ViewLDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 ViewRDefined in containers-0.8 · Data.Sequence.Internal
  • Generic1 PostOrderDefined in containers-0.8 · Data.Tree
  • Generic1 TreeDefined in containers-0.8 · Data.Tree
  • Generic1 NonEmptyDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 IdentityDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Generic1 FirstDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic1 LastDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic1 DownDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 DualDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic1 ProductDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic1 SumDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic1 ZipListDefined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Generic1 Par1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 MaybeDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 SoloDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 MaybeDefined in strict-0.5.1 · Data.Strict.Maybe
  • Generic1 []Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor m => Generic1 (MaybeT m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • Generic1 ProxyDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (WrappedMonad m)Defined in base-4.22.0.0 · Control.Applicative
  • Generic1 (Arg a)Defined in base-4.22.0.0 · Data.Semigroup
  • Generic1 (Either a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple2 a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Either a)Defined in strict-0.5.1 · Data.Strict.Either
  • Generic1 (These a)Defined in strict-0.5.1 · Data.Strict.These
  • Generic1 (Pair a)Defined in strict-0.5.1 · Data.Strict.Tuple
  • Generic1 (These a)Defined in these-1.2.1 · Data.These
  • Generic1 (Lift f)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • Functor m => Generic1 (ExceptT e m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • Generic1 (WrappedArrow a b)Defined in base-4.22.0.0 · Control.Applicative
  • Generic1 (Biap bi a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Generic1 (Kleisli m a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Arrow
  • Generic1 (Const a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Generic1 (Ap f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Generic1 (Alt f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Generic1 (Rec1 f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec Char)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec Double)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec Float)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec Int)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec Word)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (URec (Ptr ()))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple3 a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tagged s)Defined in tagged-0.8.11 · Data.Tagged
  • Generic1 (These1 f g)Defined in these-1.2.1 · Data.Functor.These
  • Generic1 (Backwards f)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • Generic1 (IdentityT f)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • Generic1 (ReaderT r m)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Reader
  • Generic1 (Constant a)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Generic1 (Reverse f)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • Generic1 (Product f g)Defined in base-4.22.0.0 · Data.Functor.Product
  • Generic1 (Sum f g)Defined in base-4.22.0.0 · Data.Functor.Sum
  • Generic1 (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple4 a b c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (f :*: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (f :+: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor f => Generic1 (Compose f g)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Functor f => Generic1 (f :.: g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Clown f a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Generic1 (Joker g a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Generic1 (WrappedBifunctor p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Generic1 (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple5 a b c d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Product f g a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • Generic1 (Sum p q a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • Generic1 (Tuple6 a b c d e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor f => Generic1 (Tannen f p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • Generic1 (Tuple7 a b c d e f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple8 a b c d e f g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor (p (f a)) => Generic1 (Biff p f g a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • Generic1 (Tuple9 a b c d e f g h)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple10 a b c d e f g h i)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple11 a b c d e f g h i j)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple12 a b c d e f g h i j k)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple13 a b c d e f g h i j k l)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple14 a b c d e f g h i j k l m)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic1 (Tuple15 a b c d e f g h i j k l m n)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
newtypenewtype K1 i c (p :: k)
#

Constants, additional parameters and recursion of kind *

Constructors

Instances65RecordToPairs, GDeciding, GToJSON', Generic1, GNFData, GBinaryGet, …
  • (Selector s, GToJSON' enc arity (K1 i t), KeyValuePair enc pairs, ToJSON t) => RecordToPairs enc pairs arity (S1 s (K1 i t))Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • q p => GDeciding q (K1 i p)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • ToJSON a => GToJSON' Encoding arity (K1 i a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSON a => GToJSON' Value arity (K1 i a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Generic1 (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • NFData a => GNFData arity (K1 i a)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary a => GBinaryGet (K1 i a)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • Binary a => GBinaryPut (K1 i a)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • Eq c => GEq1 v (K1 i c)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Ord c => GOrd1 v (K1 i c)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Read c => GRead1Con v (K1 i c)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Show c => GShow1Con v (K1 i c)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Arbitrary a => RecursivelyShrink (K1 i a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary a => GCoArbitrary (K1 i a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function a => GFunction (K1 i a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable a => GHashable arity (K1 i a)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances · orphan
  • FoldableWithIndex Void (K1 i c)Defined in indexed-traversable-0.1.5 · WithIndex
  • FunctorWithIndex Void (K1 i c)Defined in indexed-traversable-0.1.5 · WithIndex
  • TraversableWithIndex Void (K1 i c)Defined in indexed-traversable-0.1.5 · WithIndex
  • q p => GDeciding1 q (K1 i p)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • FromJSON a => GFromJSON arity (K1 i a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, FromJSON a, Generic a, K1 i a ~ Rep a) => RecordFromJSON' arity (S1 s (K1 i a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Bifoldable (K1 i)Defined in base-4.22.0.0 · Data.Bifoldable
  • Bifunctor (K1 i)Defined in base-4.22.0.0 · Data.Bifunctor
  • Bitraversable (K1 i)Defined in base-4.22.0.0 · Data.Bitraversable
  • Functor (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid c => Applicative (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable (K1 i c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • Eq c => Eq1 (K1 i c)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Ord c => Ord1 (K1 i c)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Read c => Read1 (K1 i c)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Show c => Show1 (K1 i c)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Contravariant (K1 i c)Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • IsNullaryCon (K1 i c)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Uniform a => GUniform (K1 i a)Defined in random-1.3.1 · System.Random.Internal
  • UniformRange a => GUniformRange (K1 i a)Defined in random-1.3.1 · System.Random.Internal
  • Finite a => GFinite (K1 _x a)Defined in random-1.3.1 · System.Random.GFinite
  • GG (K1 i c)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • Semigroup c => Alt (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
    since 5.3.8
  • Semigroup c => Apply (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class

    A K1 i c is not Applicative unless its c is a Monoid, but it is an instance of Apply

  • Extend (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Monoid c => Plus (K1 i c)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Filterable (K1 i c)Defined in witherable-0.5 · Witherable
  • Witherable (K1 i c)Defined in witherable-0.5 · Witherable
  • GSubterms (K1 i a) bDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GSubtermsIncl (K1 i a) aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GSubtermsIncl (K1 i a) bDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • IsRecord (K1 i c) TrueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • AllNullary (K1 i c) FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • Eq c => Eq (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Typeable i, Data p, Data c) => Data (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord c => Ord (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read c => Read (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show c => Show (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup c => Semigroup (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid c => Monoid (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq c => GEq (K1 i c p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Ord c => GOrd (K1 i c p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Read c => GReadCon (K1 i c p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Show c => GShowCon (K1 i c p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • type Rep (K1 i c p) = D1 ('MetaData "K1" "GHC.Internal.Generics" "ghc-internal" 'True) (C1 ('MetaCons "K1" 'PrefixI 'True) (S1 ('MetaSel ('Just "unK1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 c)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 (K1 i c) = D1 ('MetaData "K1" "GHC.Internal.Generics" "ghc-internal" 'True) (C1 ('MetaCons "K1" 'PrefixI 'True) (S1 ('MetaSel ('Just "unK1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 c)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Swizzle (K1 i c) = K1 i cDefined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
newtypenewtype M1 i (c :: Meta) (f :: k -> Type) (p :: k)
#

Meta-information (constructor names, etc.)

Constructors

Instances67GDeciding, GToJSON', Generic1, GNFData, GBinaryGet, GBinaryPut, …
  • GDeciding q f => GDeciding q (M1 i c f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • GToJSON' enc arity a => GToJSON' enc arity (M1 i c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Generic1 (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GNFData arity a => GNFData arity (M1 i c a)Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • GBinaryGet a => GBinaryGet (M1 i c a)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GBinaryPut a => GBinaryPut (M1 i c a)Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GEq1 v f => GEq1 v (M1 i c f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd1 v f => GOrd1 v (M1 i c f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • RecursivelyShrink f => RecursivelyShrink (M1 i c f)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GCoArbitrary f => GCoArbitrary (M1 i c f)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GFunction f => GFunction (M1 i c f)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • GHashable arity a => GHashable arity (M1 i c a)Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances · orphan
  • GDeciding1 q f => GDeciding1 q (M1 i c f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • GFromJSON arity a => GFromJSON arity (M1 i c a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • RecordFromJSON' arity f => RecordFromJSON' arity (M1 i s f)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Monad f => Monad (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor f => Functor (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • MonadFix f => MonadFix (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.Fix
  • Applicative f => Applicative (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable f => Foldable (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable f => Traversable (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • Alternative f => Alternative (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • MonadPlus f => MonadPlus (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • MonadZip f => MonadZip (M1 i c f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.Zip
  • Foldable1 f => Foldable1 (M1 i c f)Defined in base-4.22.0.0 · Data.Foldable1
  • Eq1 f => Eq1 (M1 i c f)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Ord1 f => Ord1 (M1 i c f)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Read1 f => Read1 (M1 i c f)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Show1 f => Show1 (M1 i c f)Defined in base-4.22.0.0 · Data.Functor.Classes
  • Contravariant f => Contravariant (M1 i c f)Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • GUniform f => GUniform (M1 i c f)Defined in random-1.3.1 · System.Random.Internal
  • GUniformRange f => GUniformRange (M1 i c f)Defined in random-1.3.1 · System.Random.Internal
  • GFinite a => GFinite (M1 _x _y a)Defined in random-1.3.1 · System.Random.GFinite
  • Distributive f => Distributive (M1 i c f)Defined in distributive-0.6.3 · Data.Distributive
  • GDistributive f => GDistributive (M1 i c f)Defined in distributive-0.6.3 · Data.Distributive.Generic
  • Decidable f => Decidable (M1 i c f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • Divisible f => Divisible (M1 i c f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • GG f => GG (M1 i c f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • Alt f => Alt (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Apply f => Apply (M1 i t f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind f => Bind (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Extend f => Extend (M1 i t f)Defined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Conclude f => Conclude (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Conclude
  • Decide f => Decide (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Decide
  • Divise f => Divise (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Divise
  • Plus f => Plus (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Traversable1 f => Traversable1 (M1 i c f)Defined in semigroupoids-6.0.2 · Data.Semigroup.Traversable.Class
  • Filterable f => Filterable (M1 i c f)Defined in witherable-0.5 · Witherable
  • Witherable f => Witherable (M1 i c f)Defined in witherable-0.5 · Witherable
  • GSubterms f a => GSubterms (M1 i c f) aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GSubtermsIncl f a => GSubtermsIncl (M1 i c f) aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • IsRecord (M1 S ('MetaSel 'Nothing u ss ds) f) FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • IsRecord f isRecord => IsRecord (M1 S c f) isRecordDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • AllNullary a allNullary => AllNullary (M1 i c a) allNullaryDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • Eq (f p) => Eq (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Data p, Data (f p), Typeable c, Typeable i, Typeable f) => Data (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord (f p) => Ord (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (f p) => Read (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (f p) => Show (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (f p) => Semigroup (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid (f p) => Monoid (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GEq (f p) => GEq (M1 i c f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd (f p) => GOrd (M1 i c f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • type Rep (M1 i c f p) = D1 ('MetaData "M1" "GHC.Internal.Generics" "ghc-internal" 'True) (C1 ('MetaCons "M1" 'PrefixI 'True) (S1 ('MetaSel ('Just "unM1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (f p))))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 (M1 i c f) = D1 ('MetaData "M1" "GHC.Internal.Generics" "ghc-internal" 'True) (C1 ('MetaCons "M1" 'PrefixI 'True) (S1 ('MetaSel ('Just "unM1") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec1 f)))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Swizzle (M1 i c f) = M1 i c (Swizzle f)Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
datadata Meta
#

Datatype to represent metadata associated with a datatype (MetaData), constructor (MetaCons), or field selector (MetaSel).

  • In MetaData n m p nt, n is the datatype's name, m is the module in which the datatype is defined, p is the package in which the datatype is defined, and nt is 'True if the datatype is a newtype.

  • In MetaCons n f s, n is the constructor's name, f is its fixity, and s is 'True if the constructor contains record selectors.

  • In MetaSel mn su ss ds, if the field uses record syntax, then mn is Just the record name. Otherwise, mn is Nothing. su and ss are the field's unpackedness and strictness annotations, and ds is the strictness that GHC infers for the field.

Instances3Constructor, Datatype, Selector
typetype Rec0 = K1 R
#

Type synonym for encoding recursion (of kind Type)

Instances1RecordFromJSON'
  • (Selector s, FromJSON a) => RecordFromJSON' arity (S1 s (Rec0 a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
familytype family Rep a :: Type -> Type
#

Generic representation type

Instances270Rep, …
typetype S1 = M1 S
#

Type synonym for encoding meta-information for record selectors

Instances18RecordToPairs, ConsToJSON', ConsFromJSON', GRead1Con, GShow1Con, FieldNames, …
  • (Selector s, GToJSON' enc One Par1, KeyValuePair enc pairs) => RecordToPairs enc pairs One (S1 s Par1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (Selector s, GToJSON' enc One (Rec1 f), KeyValuePair enc pairs, ToJSON1 f) => RecordToPairs enc pairs One (S1 s (Rec1 f))Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (Selector s, GToJSON' enc arity (K1 i t), KeyValuePair enc pairs, ToJSON t) => RecordToPairs enc pairs arity (S1 s (K1 i t))Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (RecordToPairs enc pairs arity (S1 s f), FromPairs enc pairs, GToJSON' enc arity f) => ConsToJSON' enc arity (S1 s f) TrueDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • GFromJSON arity f => ConsFromJSON' arity (S1 s f) FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (GFromJSON arity a, RecordFromJSON arity (S1 s a)) => ConsFromJSON' arity (S1 s a) TrueDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, GRead1Con v f) => GRead1Con v (S1 s f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (Selector s, GShow1Con v f) => GShow1Con v (S1 s f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Selector s => FieldNames (S1 s f)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • GFromJSON arity a => ProductFromJSON arity (S1 s a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, FromJSON a) => RecordFromJSON' arity (S1 s (Rec0 a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, FromJSON a, Generic a, K1 i a ~ Rep a) => RecordFromJSON' arity (S1 s (K1 i a))Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, GFromJSON One Par1) => RecordFromJSON' One (S1 s Par1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • (Selector s, GFromJSON One (Rec1 f), FromJSON1 f) => RecordFromJSON' One (S1 s (Rec1 f))Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • IsNullaryCon f => IsNullaryCon (S1 s f)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • ProductSize (S1 s a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • (Selector s, GReadCon (f p)) => GReadCon (S1 s f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • (Selector s, GShowCon (f p)) => GShowCon (S1 s f p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
classclass Selector (s :: k) where
#

Class for datatypes that represent records

Methods

Instances1Selector
  • (SingI mn, SingI su, SingI ss, SingI ds) => Selector ('MetaSel mn su ss ds)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
datadata U1 (p :: k)
#

Unit: used for constructors without arguments

Instances76TaggedObject', SumToJSON', GDeciding, GToJSON', ConsFromJSON', FromTaggedObject', …
  • Monoid pairs => TaggedObject' enc pairs arity U1 FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • (Constructor c, IsString enc) => SumToJSON' UntaggedValue enc arity (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • GDeciding q U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • GToJSON' Encoding arity U1Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • GToJSON' Value arity U1Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ConsFromJSON' arity U1 FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromTaggedObject' arity U1 FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Generic1 U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GNFData arity U1Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • GBinaryGet U1Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GBinaryPut U1Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GEq1 v U1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd1 v U1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GRead1Con v U1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShow1Con v U1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • RecursivelyShrink U1Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GCoArbitrary U1Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GFunction U1Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • GHashable arity U1Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances · orphan
  • FoldableWithIndex Void U1Defined in indexed-traversable-0.1.5 · WithIndex
  • FunctorWithIndex Void U1Defined in indexed-traversable-0.1.5 · WithIndex
  • TraversableWithIndex Void U1Defined in indexed-traversable-0.1.5 · WithIndex
  • GDeciding1 q U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • Constructor c => FromUntaggedValue arity (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Constructor c => SumFromString (C1 c U1)Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • Monad U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Functor U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Applicative U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • Alternative U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • MonadPlus U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • MonadZip U1Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.Zip
  • Eq1 U1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Ord1 U1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Read1 U1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Show1 U1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Contravariant U1Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • IsNullaryCon U1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GUniform U1Defined in random-1.3.1 · System.Random.Internal
  • GUniformRange U1Defined in random-1.3.1 · System.Random.Internal
  • GFinite U1Defined in random-1.3.1 · System.Random.GFinite
  • Distributive U1Defined in distributive-0.6.3 · Data.Distributive
  • GDistributive U1Defined in distributive-0.6.3 · Data.Distributive.Generic
  • Decidable U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • Divisible U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Divisible
  • GG U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • Alt U1Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Apply U1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Bind U1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class
  • Extend U1Defined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Conclude U1Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Conclude
  • Decide U1Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Decide
  • Divise U1Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Divise
  • Plus U1Defined in semigroupoids-6.0.2 · Data.Functor.Plus
  • Filterable U1Defined in witherable-0.5 · Witherable
  • Witherable U1Defined in witherable-0.5 · Witherable
  • GSubterms U1 aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GSubtermsIncl U1 aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • IsRecord U1 FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • AllNullary U1 TrueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • Eq (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Data p => Data (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Monoid (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GEq (U1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd (U1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GReadCon (U1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShowCon (U1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • type Rep (U1 p) = D1 ('MetaData "U1" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "U1" 'PrefixI 'False) U1)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 U1 = D1 ('MetaData "U1" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "U1" 'PrefixI 'False) U1)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Swizzle U1 = U1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
data familydata family URec a (p :: k)
#

Constants of unlifted kinds

Instances67Generic1, GNFData, Foldable, Traversable, Functor, Eq, …
datadata V1 (p :: k)
#

Void: used for datatypes without constructors

Instances56GDeciding, GToJSON', Generic1, GNFData, GBinaryGet, GBinaryPut, …
  • GDeciding q V1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • GToJSON' Encoding arity V1Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • GToJSON' Value arity V1Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Generic1 V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GNFData arity V1Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • GBinaryGet V1Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GBinaryPut V1Defined in binary-0.8.9.3 · Data.Binary.Generic · orphan
  • GEq1 v V1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd1 v V1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GRead1 v V1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShow1 v V1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • RecursivelyShrink V1Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GHashable arity V1Defined in hashable-1.5.1.0 · Data.Hashable.Generic.Instances · orphan
  • FoldableWithIndex Void V1Defined in indexed-traversable-0.1.5 · WithIndex
  • FunctorWithIndex Void V1Defined in indexed-traversable-0.1.5 · WithIndex
  • TraversableWithIndex Void V1Defined in indexed-traversable-0.1.5 · WithIndex
  • GDeciding1 q V1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • GFromJSON arity V1Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • GFromJSON' arity V1Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON

    No constructors.

  • Functor V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • Foldable1 V1Defined in base-4.22.0.0 · Data.Foldable1
  • Eq1 V1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Ord1 V1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Read1 V1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Show1 V1Defined in base-4.22.0.0 · Data.Functor.Classes
  • Contravariant V1Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • IsNullaryDataType V1Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GFinite V1Defined in random-1.3.1 · System.Random.GFinite
  • GG V1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
  • Alt V1Defined in semigroupoids-6.0.2 · Data.Functor.Alt
  • Apply V1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class

    A V1 is not Applicative, but it is an instance of Apply

  • Bind V1Defined in semigroupoids-6.0.2 · Data.Functor.Bind.Class

    A V1 is not a Monad, but it is an instance of Bind

  • Extend V1Defined in semigroupoids-6.0.2 · Data.Functor.Extend
  • Decide V1Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Decide

    Has no Decidable or Conclude instance.

  • Divise V1Defined in semigroupoids-6.0.2 · Data.Functor.Contravariant.Divise

    Has no Divisible instance.

  • Traversable1 V1Defined in semigroupoids-6.0.2 · Data.Semigroup.Traversable.Class
  • Filterable V1Defined in witherable-0.5 · Witherable
  • Witherable V1Defined in witherable-0.5 · Witherable
  • GSubterms V1 aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • GSubtermsIncl V1 aDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Eq (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Data p => Data (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Semigroup (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • GEq (V1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GOrd (V1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GRead (V1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • GShow (V1 p)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • type Rep (V1 p) = D1 ('MetaData "V1" "GHC.Internal.Generics" "ghc-internal" 'False) V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 V1 = D1 ('MetaData "V1" "GHC.Internal.Generics" "ghc-internal" 'False) V1Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Swizzle V1 = V1Defined in contravariant-1.5.6 · Data.Functor.Contravariant.Generic
typetype FilePath = String
#

File and directory names are values of type String, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file.

datadata MaskingState
#

Describes the behaviour of a thread when an asynchronous exception is received.

Constructors

Instances3Eq, Show, NFData
datadata ArrayException
#

Exceptions generated by array operations

Constructors

Instances4Eq, Ord, Show, Exception
datadata AsyncException
#

Asynchronous exceptions.

Constructors

  • StackOverflow

    The current thread's stack exceeded its limit. Since an exception has been raised, the thread's stack will certainly be below its limit again, but the programmer should take remedial action immediately.

  • HeapOverflow

    The program's heap is reaching its limit, and the program should take action to reduce the amount of live data it has. Notes:

    • It is undefined which thread receives this exception. GHC currently throws this to the same thread that receives UserInterrupt, but this may change in the future.

    • The GHC RTS currently can only recover from heap overflow if it detects that an explicit memory limit (set via RTS flags). has been exceeded. Currently, failure to allocate memory from the operating system results in immediate termination of the program.

  • ThreadKilled

    This exception is raised by another thread calling killThread, or by the system if it needs to terminate the thread for some reason.

  • UserInterrupt

    This exception is raised by default in the main thread of the program when the user requests to terminate the program via the usual mechanism(s) (e.g. Control-C in the console).

Instances4Eq, Ord, Show, Exception
datadata Deadlock
#

There are no runnable threads, so the program is deadlocked. The Deadlock exception is raised in the main thread only.

Instances2Show, Exception
  • Show DeadlockDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Exception DeadlockDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
datadata ExitCode
#

Defines the exit codes that a program can return.

Constructors

  • ExitSuccess

    indicates successful termination;

  • ExitFailure Int

    indicates program failure with an exit code. The exact interpretation of the code is operating-system dependent. In particular, some values may be prohibited (e.g. 0 on a POSIX-compliant system).

Instances11Eq, Ord, Read, Show, Generic, Exception, …
datadata IOException
#

Exceptions that occur in the IO monad. An IOException records a more specific error type, a descriptive string and maybe the handle that was used when the error was flagged.

Instances4Eq, Show, Exception, MonadError
datadata Handle
#

Haskell defines operations to read and write characters from and to files, represented by values of type Handle. Each value of this type is a handle: a record used by the Haskell run-time system to manage I/O with file system objects. A handle has at least the following properties:

  • whether it manages input or output or both;

  • whether it is open, closed or semi-closed;

  • whether the object is seekable;

  • whether buffering is disabled, or enabled on a line or block basis;

  • a buffer (whose length may be zero).

Most handles will also have a current I/O position indicating where the next input or output operation will occur. A handle is readable if it manages only input or both input and output; likewise, it is writable if it manages only output or both input and output. A handle is open when first allocated. Once it is closed it can no longer be used for either input or output, though an implementation cannot re-use its storage while references remain to it. Handles are in the Show and Eq classes. The string produced by showing a handle is system dependent; it should include enough information to identify the handle for debugging. A handle is equal according to == only to itself; no attempt is made to compare the internal state of different handles for equality.

Instances2Eq, Show
  • Eq HandleDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show HandleDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
datadata IOMode
#

See GHC.Internal.System.IO.openFile

Instances9Enum, Eq, Ord, Read, Show, Ix, …
  • Enum IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Eq IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Ord IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Read IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Show IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Ix IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Arbitrary IOModeDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary IOModeDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function IOModeDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
datadata Int16
#

16-bit signed integer type

Instances40Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Data Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ix Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • FiniteBits Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Storable Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Int16Defined in base-4.22.0.0 · Text.Printf
  • NFData Int16Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary Int16Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Int16Defined in random-1.3.1 · System.Random
  • Finite Int16Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Int16Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Int16Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Int16Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Int16Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Int16Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Int16Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Int16Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Int16Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON Int16Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Int16Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Int16Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Int16Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Int16Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Int16Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Int16Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Int16Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • MArray IOUArray Int16 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Int16 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Int16Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Int16Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
datadata Int32
#

32-bit signed integer type

Instances42Bounded, Enum, Eq, Integral, Data, Num, …
datadata Int64
#

64-bit signed integer type

Instances40Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Data Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ix Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • FiniteBits Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Storable Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Int64Defined in base-4.22.0.0 · Text.Printf
  • NFData Int64Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary Int64Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Int64Defined in random-1.3.1 · System.Random
  • Finite Int64Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Int64Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Int64Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Int64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Int64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Int64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Int64Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Int64Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Int64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON Int64Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Int64Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Int64Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Int64Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Int64Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Int64Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Int64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Int64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • MArray IOUArray Int64 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Int64 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Int64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Int64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
datadata Int8
#

8-bit signed integer type

Instances40Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Enum Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Eq Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Data Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ord Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Ix Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Bits Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • FiniteBits Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Storable Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Int8Defined in base-4.22.0.0 · Text.Printf
  • NFData Int8Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary Int8Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Int8Defined in random-1.3.1 · System.Random
  • Finite Int8Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Int8Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Int8Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Int8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Int8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Int8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Int8Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Int8Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Int8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON Int8Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Int8Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Int8Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Int8Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Int8Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Int8Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Int8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Int8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • MArray IOUArray Int8 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Int8 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Int8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Int8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
datadata MVar a
#

An MVar (pronounced "em-var") is a synchronising variable, used for communication between concurrent threads. It can be thought of as a box, which may be empty or full.

Instances3NFData1, Eq, NFData
  • NFData1 MVarDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Eq (MVar a)Defined in ghc-internal-9.1401.0 · GHC.Internal.MVar

    Compares the underlying pointers.

  • NFData (MVar a)Defined in deepseq-1.5.1.0 · Control.DeepSeq

    NOTE: Only strict in the reference and not the referenced value.

classclass Num a where
#

Basic numeric class.

The Haskell Report defines no laws for Num. However, (+) and (*) are customarily expected to define a ring and have the following properties:

Associativity of (+)

(x + y) + z

=

x + (y + z)

Commutativity of (+)

x + y

=

y + x

fromInteger 0 is the additive identity

x + fromInteger 0

=

x

negate gives the additive inverse

x + negate x

=

fromInteger 0

Associativity of (*)

(x * y) * z

=

x * (y * z)

fromInteger 1 is the multiplicative identity

x * fromInteger 1

=

x

and

fromInteger 1 * x

=

x

Distributivity of (*) with respect to (+)

a * (b + c)

=

(a * b) + (a * c)

and

(b + c) * a

=

(b * a) + (c * a)

Coherence with toInteger

if the type also implements

GHC.Real.Integral

, then

fromInteger

is a left inverse for

toInteger

, i.e.

fromInteger (toInteger i) == i

Note that it isn't customarily expected that a type instance of both Num and Ord implement an ordered ring. Indeed, in base only Integer and Data.Ratio.Rational do.

Methods

  • (+) :: a -> a -> ainfixl 6
  • (-) :: a -> a -> ainfixl 6
  • (*) :: a -> a -> ainfixl 7
  • negate :: a -> a

    Unary negation.

  • abs :: a -> a

    Absolute value.

  • signum :: a -> a

    Sign of a number. The functions abs and signum should satisfy the law:

    abs x * signum x == x

    For real numbers, the signum is either -1 (negative), 0 (zero) or 1 (positive).

  • fromInteger :: Integer -> a

    Conversion from an Integer. An integer literal represents the application of the function fromInteger to the appropriate value of type Integer, so such literals have type (Num a) => a.

Instances116Num, …
  • Num OrdADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Num OrdBDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Num OrdCDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Num Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Num TimeSpecDefined in clock-0.8.4 · System.Clock
  • Num SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Num IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Num
  • Num NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Num

    Note that Natural's Num instance isn't a ring: no element but 0 has an additive inverse. It is a semiring though.

  • Num EventTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Num EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Poll
  • Num UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Unique
  • Num CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Num IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Num WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Num HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Num Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Num Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Num Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Num Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Num ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Num WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Num ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Num WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Num CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Num DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero. Neither addition nor multiplication are associative or distributive:

    Example3 expressions
    (0.1 + 0.1) + 0.4 == 0.1 + (0.1 + 0.4)False(0.1 + 0.2) * 0.3 == 0.1 * 0.3 + 0.2 * 0.3False(0.1 * 0.1) * 0.3 == 0.1 * (0.1 * 0.3)False
  • Num FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero. Neither addition nor multiplication are associative or distributive:

    Example3 expressions
    (0.1 + 0.1 :: Float) + 0.5 == 0.1 + (0.1 + 0.5)False(0.1 + 0.2 :: Float) * 0.9 == 0.1 * 0.9 + 0.2 * 0.9False(0.1 * 0.1 :: Float) * 0.9 == 0.1 * (0.1 * 0.9)False
  • Num IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Num
  • Num WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Num
  • Num Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Num Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Num Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Num Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Num HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Num CardinalityDefined in random-1.3.1 · System.Random.GFinite
  • Num ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    WARNING: + and - compute the Integer magnitude: 10^e where e is the difference between the base10Exponents of the arguments. If these methods are applied to arguments which have huge exponents this could fill up all space and crash your program! So don't apply these methods to scientific numbers coming from untrusted sources. The other methods can be used safely.

  • Num I8Defined in text-2.1.3 · Data.Text.Foreign
  • Num SizeDefined in text-2.1.3 · Data.Text.Internal.Fusion.Size
  • Num BDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Num DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Num NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Num CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Num StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Num StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Num BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Num SizeDefined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle.Size
  • RealFloat a => Num (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Num a => Num (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Num a => Num (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Num a => Num (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Num a => Num (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Num a => Num (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Num a => Num (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Num a => Num (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Num a => Num (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Num a => Num (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Integral a => Num (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • HasResolution a => Num (Fixed a)Defined in base-4.22.0.0 · Data.Fixed

    Multiplication is not associative or distributive:

    Example1 expression
    (0.2 * 0.6 :: Deci) * 0.9 == 0.2 * (0.6 * 0.9)False
    Example1 expression
    (0.1 + 0.1 :: Deci) * 0.5 == 0.1 * 0.5 + 0.1 * 0.5False
  • Num a => Num (Op a b)Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • Num (f a) => Num (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Num a => Num (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Num a => Num (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • (Biapplicative bi, Num a, Num b) => Num (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • (Applicative f, Num a) => Num (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid

    Note that even if the underlying Num and Applicative instances are lawful, for most Applicatives, this instance will not be lawful. If you use this instance with the list Applicative, the following customary laws will not hold:

    Commutativity:

    Example2 expressions
    Ap [10,20] + Ap [1,2]Ap {getAp = [11,12,21,22]}Ap [1,2] + Ap [10,20]Ap {getAp = [11,21,12,22]}

    Additive inverse:

    Example2 expressions
    Ap [] + negate (Ap [])Ap {getAp = []}fromInteger 0 :: Ap [] IntAp {getAp = [0]}

    Distributivity:

    Example2 expressions
    Ap [1,2] * (3 + 4)Ap {getAp = [7,14]}(Ap [1,2] * 3) + (Ap [1,2] * 4)Ap {getAp = [7,11,10,14]}
  • Num (f (g a)) => Num (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
datadata Ptr a
#

A value of type Ptr a represents a pointer to an object, or an array of objects, which may be marshalled to or from Haskell values of type a.

The type a will often be an instance of class Storable which provides the marshalling operations. However this is not essential, and you can provide your own operations to access the pointer. For example you might write small foreign functions to get or set the fields of a C struct.

Instances27NFData1, IArray, Generic1, Data, Foldable, Traversable, …
classclass Read a where
#

Parsing of Strings, producing values.

Derived instances of Read make the following assumptions, which derived instances of Text.Show.Show obey:

  • If the constructor is defined to be an infix operator, then the derived Read instance will parse only infix applications of the constructor (not the prefix form).

  • Associativity is not used to reduce the occurrence of parentheses, although precedence may be.

  • If the constructor is defined using record syntax, the derived Read will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration.

  • The derived Read instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed.

For example, given the declarations

infixr 5 :^:
data Tree a =  Leaf a  |  Tree a :^: Tree a

the derived instance of Read in Haskell 2010 is equivalent to

instance (Read a) => Read (Tree a) where

        readsPrec d r =  readParen (d > app_prec)
                         (\r -> [(Leaf m,t) |
                                 ("Leaf",s) <- lex r,
                                 (m,t) <- readsPrec (app_prec+1) s]) r

                      ++ readParen (d > up_prec)
                         (\r -> [(u:^:v,w) |
                                 (u,s) <- readsPrec (up_prec+1) r,
                                 (":^:",t) <- lex s,
                                 (v,w) <- readsPrec (up_prec+1) t]) r

          where app_prec = 10
                up_prec = 5

Note that right-associativity of :^: is unused.

The derived instance in GHC is equivalent to

instance (Read a) => Read (Tree a) where

        readPrec = parens $ (prec app_prec $ do
                                 Ident "Leaf" <- lexP
                                 m <- step readPrec
                                 return (Leaf m))

                     +++ (prec up_prec $ do
                                 u <- step readPrec
                                 Symbol ":^:" <- lexP
                                 v <- step readPrec
                                 return (u :^: v))

          where app_prec = 10
                up_prec = 5

        readListPrec = readListPrecDefault

Why do both readsPrec and readPrec exist, and why does GHC opt to implement readPrec in derived Read instances instead of readsPrec? The reason is that readsPrec is based on the ReadS type, and although ReadS is mentioned in the Haskell 2010 Report, it is not a very efficient parser data structure.

readPrec, on the other hand, is based on a much more efficient ReadPrec datatype (a.k.a "new-style parsers"), but its definition relies on the use of the RankNTypes language extension. Therefore, readPrec (and its cousin, readListPrec) are marked as GHC-only. Nevertheless, it is recommended to use readPrec instead of readsPrec whenever possible for the efficiency improvements it brings.

As mentioned above, derived Read instances in GHC will implement readPrec instead of readsPrec. The default implementations of readsPrec (and its cousin, readList) will simply use readPrec under the hood. If you are writing a Read instance by hand, it is recommended to write it like so:

instance Read T where
  readPrec     = ...
  readListPrec = readListPrecDefault
Instances283Read, …
  • Read ASCIIStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read PrintableStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read UnicodeStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read QCGenDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Random
  • Read ArgsDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Test
  • Read KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Read DotNetTimeDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Read ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Read GCDetailsDefined in base-4.22.0.0 · GHC.Stats
  • Read RTSStatsDefined in base-4.22.0.0 · GHC.Stats
  • Read OptionsDefined in bifunctors-5.6.3 · Data.Bifunctor.TH
  • Read ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Read ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Read ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Read Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Read JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Read JSValueDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Read TermDefined in cborg-0.2.10.0 · Codec.CBOR.Term
  • Read ClockDefined in clock-0.8.4 · System.Clock
  • Read TimeSpecDefined in clock-0.8.4 · System.Clock
  • Read SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Read IntSetDefined in containers-0.8 · Data.IntSet.Internal
  • Read FileTypeDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Read PermissionsDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Read XdgDirectoryDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Read XdgDirectoryListDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Read VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Read

    Reading a Void value is always a parse error, considering Void as a data type with no constructors.

  • Read IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Read AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read VersionDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Version
  • Read CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Read IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Read WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Read AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read SeekModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Read ExitCodeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Read BufferModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Read NewlineDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Read NewlineModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Read IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Read Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Read GCDetailsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Read RTSStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Read CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Read LexemeDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read SomeCharDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Read SomeSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Read SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Read BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Read CommunicationHandleDefined in process-1.6.26.1 · System.Process.CommunicationHandle.Internal
  • Read ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    Supports the skipping of parentheses and whitespaces. Example:

    > read " ( ((  -1.0e+3 ) ))" :: Scientific
    -1000.0

    (Note: This Read instance makes internal use of scientificP to parse the floating-point number.)

  • Read SMGenDefined in splitmix-0.1.3.2 · System.Random.SplitMix
    Example1 expression
    readMaybe "SMGen 1 1" :: Maybe SMGenJust (SMGen 1 1)
    Example1 expression
    readMaybe "SMGen 1 2" :: Maybe SMGenNothing
    Example1 expression
    readMaybe (show (mkSMGen 42)) :: Maybe SMGenJust (SMGen 9297814886316923340 13679457532755275413)
  • Read SMGenDefined in splitmix-0.1.3.2 · System.Random.SplitMix32
    Example1 expression
    readMaybe "SMGen 1 1" :: Maybe SMGenJust (SMGen 1 1)
    Example1 expression
    readMaybe "SMGen 1 2" :: Maybe SMGenNothing
    Example1 expression
    readMaybe (show (mkSMGen 42)) :: Maybe SMGenJust (SMGen 142593372 1604540297)
  • Read I8Defined in text-2.1.3 · Data.Text.Foreign
  • Read TextDefined in text-2.1.3 · Data.Text · orphan
  • Read TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Read FPFormatDefined in text-2.1.3 · Data.Text.Lazy.Builder.RealFloat
  • Read ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Read DatatypeVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Read CalendarDiffDaysDefined in time-1.15 · Data.Time.Format.ISO8601 · orphan
  • Read DayDefined in time-1.15 · Data.Time.Format.Parse · orphan
  • Read MonthDefined in time-1.15 · Data.Time.Calendar.Month

    Read as yyyy-mm.

  • Read QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter

    Read as yyyy-Qn.

  • Read QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Read DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week
  • Read DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Read NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Read UTCTimeDefined in time-1.15 · Data.Time.Format.Parse · orphan
  • Read UniversalTimeDefined in time-1.15 · Data.Time.Format.Parse · orphan
  • Read CalendarDiffTimeDefined in time-1.15 · Data.Time.Format.ISO8601 · orphan
  • Read LocalTimeDefined in time-1.15 · Data.Time.Format.Parse · orphan
  • Read TimeOfDayDefined in time-1.15 · Data.Time.Format.Parse · orphan
  • Read TimeZoneDefined in time-1.15 · Data.Time.Format.Parse · orphan

    This only works for ±HHMM format, single-letter military time-zones, and these time-zones: "UTC", "UT", "GMT", "EST", "EDT", "CST", "CDT", "MST", "MDT", "PST", "PDT", per RFC 822 section 5.

  • Read ZonedTimeDefined in time-1.15 · Data.Time.Format.Parse · orphan

    This only works for a zonedTimeZone in ±HHMM format, single-letter military time-zones, and these time-zones: "UTC", "UT", "GMT", "EST", "EDT", "CST", "CDT", "MST", "MDT", "PST", "PDT", per RFC 822 section 5.

  • Read RTLDFlagsDefined in unix-2.8.8.0 · System.Posix.DynamicLinker.Prim
  • Read CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Read StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Read StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Read OpenFileFlagsDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Read OpenModeDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Read GroupEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Read UserEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Read UUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Read UnpackedUUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Read ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read1 f => Read (Fix f)Defined in data-fix-0.3.4 · Data.Fix
  • Read a => Read (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Negative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (NonEmptyList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (NonNegative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (NonPositive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (NonZero a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (OrderedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Positive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (SortedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Read a => Read (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Read a => Read (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Read a => Read (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Read a => Read (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Read a => Read (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Read a => Read (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Read a => Read (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Read a => Read (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Read a => Read (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Read a => Read (Tree a)Defined in containers-0.8 · Data.Tree
  • Read a => Read (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Read a => Read (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Read a => Read (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Read a => Read (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Read a => Read (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read a => Read (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Read a => Read (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity

    This instance would be equivalent to the derived instances of the Identity newtype if the runIdentity field were removed

  • Read a => Read (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Read a => Read (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Read a => Read (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord

    This instance would be equivalent to the derived instances of the Down newtype if the getDown field were removed

  • Read a => Read (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read a => Read (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read a => Read (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read a => Read (ZipList a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Read a => Read (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read a => Read (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Read a => Read (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Read a => Read (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Read a => Read (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Read a => Read (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Read a => Read (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read a => Read [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read e => Read (IntMap e)Defined in containers-0.8 · Data.IntMap.Internal
  • Read m => Read (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Read p => Read (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read v => Read (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Read vertex => Read (SCC vertex)Defined in containers-0.8 · Data.Graph
  • (Functor f, Read1 f) => Read (Mu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Functor f, Read1 f) => Read (Nu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Read a, Ord a) => Read (Set a)Defined in containers-0.8 · Data.Set.Internal
  • (Read a, Storable a) => Read (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • (Read a, Prim a) => Read (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • (Read a, Unbox a) => Read (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • (Integral a, Read a) => Read (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Hashable a, Read a) => Read (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal
  • HasResolution a => Read (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Read (Proxy t)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Read (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (f a) => Read (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • (Read1 f, Read a) => Read (Lift f a)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • (Read1 m, Read a) => Read (MaybeT m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • (Ord k, Read k, Read e) => Read (Map k e)Defined in containers-0.8 · Data.Map.Internal
  • (Ix a, Read a, Read b) => Read (Array a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Ix ix, Read ix, Read e, IArray UArray e) => Read (UArray ix e)Defined in array-0.5.8.0 · Data.Array.Base
  • (Read a, Read b) => Read (Arg a b)Defined in base-4.22.0.0 · Data.Semigroup
  • (Read a, Read b) => Read (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • (Read a, Read b) => Read (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • (Read a, Read b) => Read (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • (Read a, Read b) => Read (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Read a, Read b) => Read (These a b)Defined in these-1.2.1 · Data.These
  • (Read a, Read b) => Read (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Hashable k, Read k, Read e) => Read (HashMap k e)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal
  • (GRead (Rep1 f a), Generic1 f) => Read (FunctorClassesDefault f a)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Read (bi a b) => Read (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Read (f a) => Read (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Read (f a) => Read (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Read (f p) => Read (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (p (Fix p a) a) => Read (Fix p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Fix
  • Read (p a a) => Read (Join p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Join
  • Read a => Read (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const

    This instance would be equivalent to the derived instances of the Const newtype if the getConst field were removed

  • Read a => Read (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Read b => Read (Tagged s b)Defined in tagged-0.8.11 · Data.Tagged
  • Coercible a b => Read (Coercion a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • (Read1 f, Read a) => Read (Backwards f a)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • (Read1 f, Read a) => Read (IdentityT f a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • (Read1 f, Read a) => Read (Reverse f a)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • (Read (f a), Read (g a), Read a) => Read (These1 f g a)Defined in these-1.2.1 · Data.Functor.These
  • (Read a, Read b, Read c) => Read (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read e, Read1 m, Read a) => Read (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • (Read w, Read1 m, Read a) => Read (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • (Read w, Read1 m, Read a) => Read (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • a ~ b => Read (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Read c => Read (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Read (f a), Read (g a)) => Read (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Read (f a), Read (g a)) => Read (Sum f g a)Defined in base-4.22.0.0 · Data.Functor.Sum
  • (Read (f p), Read (g p)) => Read ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Read (f p), Read (g p)) => Read ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Read a, Read b, Read c, Read d) => Read (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • a ~~ b => Read (a :~~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Read (f (g a)) => Read (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Read (f (g p)) => Read ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (f a) => Read (Clown f a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Read (f p) => Read (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Read (g b) => Read (Joker g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Read (p a b) => Read (WrappedBifunctor p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Read (p b a) => Read (Flip p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Flip
  • (Read a, Read b, Read c, Read d, Read e) => Read (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read (f a b), Read (g a b)) => Read (Product f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • (Read (p a b), Read (q a b)) => Read (Sum p q a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • (Read a, Read b, Read c, Read d, Read e, Read f) => Read (a, b, c, d, e, f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read (f (p a b)) => Read (Tannen f p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g) => Read (a, b, c, d, e, f, g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h) => Read (a, b, c, d, e, f, g, h)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Read (p (f a) (g b)) => Read (Biff p f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i) => Read (a, b, c, d, e, f, g, h, i)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j) => Read (a, b, c, d, e, f, g, h, i, j)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k) => Read (a, b, c, d, e, f, g, h, i, j, k)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l) => Read (a, b, c, d, e, f, g, h, i, j, k, l)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • (Read a, Read b, Read c, Read d, Read e, Read f, Read g, Read h, Read i, Read j, Read k, Read l, Read m, Read n, Read o) => Read (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
classclass Num a => Fractional a where
#

Fractional numbers, supporting real division.

The Haskell Report defines no laws for Fractional. However, (+) and (*) are customarily expected to define a division ring and have the following properties:

recip gives the multiplicative inverse

x * recip x

=

recip x * x

=

fromInteger 1

Totality of toRational

toRational

is total

Coherence with toRational

if the type also implements

Real

, then

fromRational

is a left inverse for

toRational

, i.e.

fromRational (toRational i) = i

Note that it isn't customarily expected that a type instance of Fractional implement a field. However, all instances in base do.

Methods

Instances19Fractional, …
  • Fractional SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Fractional CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Fractional CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Fractional DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero.

    Example4 expressions
    0 == (-0 :: Double)Truerecip 0 == recip (-0 :: Double)Falsemap (/ 0) [-1, 0, 1][-Infinity,NaN,Infinity]map (* 0) $ map (/ 0) [-1, 0, 1][NaN,NaN,NaN]
  • Fractional FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero.

    Example4 expressions
    0 == (-0 :: Float)Truerecip 0 == recip (-0 :: Float)Falsemap (/ 0) [-1, 0, 1 :: Float][-Infinity,NaN,Infinity]map (* 0) $ map (/ 0) [-1, 0, 1 :: Float][NaN,NaN,NaN]
  • Fractional HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Fractional ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    WARNING: recip and / will throw an error when their outputs are repeating decimals.

    These methods also compute Integer magnitudes (10^e). If these methods are applied to arguments which have huge exponents this could fill up all space and crash your program! So don't apply these methods to scientific numbers coming from untrusted sources.

    fromRational will throw an error when the input Rational is a repeating decimal. Consider using fromRationalRepetend for these rationals which will detect the repetition and indicate where it starts.

  • Fractional DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Fractional NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • RealFloat a => Fractional (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Fractional a => Fractional (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Fractional a => Fractional (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Fractional a => Fractional (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • Integral a => Fractional (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • HasResolution a => Fractional (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Fractional a => Fractional (Op a b)Defined in base-4.22.0.0 · Data.Functor.Contravariant
  • Fractional a => Fractional (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Fractional a => Fractional (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Fractional (f (g a)) => Fractional (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
classclass (Real a, Enum a) => Integral a where
#

Integral numbers, supporting integer division.

The Haskell Report defines no laws for Integral. However, Integral instances are customarily expected to define a Euclidean domain and have the following properties for the div/mod and quot/rem pairs, given suitable Euclidean functions f and g:

  • x = y * quot x y + rem x y with rem x y = fromInteger 0 or g (rem x y) < g y

  • x = y * div x y + mod x y with mod x y = fromInteger 0 or f (mod x y) < f y

An example of a suitable Euclidean function, for Integer's instance, is abs.

In addition, toInteger should be total, and fromInteger should be a left inverse for it, i.e. fromInteger (toInteger i) = i.

Methods

  • quot :: a -> a -> ainfixl 7

    Integer division truncated toward zero.

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • rem :: a -> a -> ainfixl 7

    Integer remainder, satisfying

    (x `quot` y)*y + (x `rem` y) == x

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • div :: a -> a -> ainfixl 7

    Integer division truncated toward negative infinity.

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • mod :: a -> a -> ainfixl 7

    Integer modulus, satisfying

    (x `div` y)*y + (x `mod` y) == x

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • quotRem :: a -> a -> (a, a)

    Simultaneous quot and rem.

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • divMod :: a -> a -> (a, a)

    simultaneous div and mod.

    WARNING: This function is partial (because it throws when 0 is passed as the divisor) for all the integer types in base.

  • toInteger :: a -> Integer

    Conversion to Integer.

Instances78Integral, …
  • Integral Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Integral TimeSpecDefined in clock-0.8.4 · System.Clock
  • Integral IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Integral NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Integral CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Integral IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Integral WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Integral HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Integral Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Integral ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Integral WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Integral ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Integral WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Integral CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Integral IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Integral WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Integral Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral CardinalityDefined in random-1.3.1 · System.Random.GFinite
  • Integral I8Defined in text-2.1.3 · Data.Text.Foreign
  • Integral StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Integral StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Integral a => Integral (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Integral a => Integral (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Integral a => Integral (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Integral a => Integral (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Integral a => Integral (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Integral a => Integral (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Integral (f (g a)) => Integral (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
datadata Ratio a
#

Rational numbers, with numerator and denominator of some Integral type.

Note that Ratio's instances inherit the deficiencies from the type parameter's. For example, Ratio Natural's Num instance has similar problems to Numeric.Natural.Natural's.

Constructors

Instances22NFData1, Lift, Enum, Eq, Fractional, Data, …
typetype Rational = Ratio Integer
#

Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator.

classclass (Num a, Ord a) => Real a where
#

Real numbers.

The Haskell report defines no laws for Real, however Real instances are customarily expected to adhere to the following law:

Coherence with fromRational

if the type also implements

Fractional

, then

fromRational

is a left inverse for

toRational

, i.e.

fromRational (toRational i) = i

The law does not hold for Float, Double, CFloat, CDouble, etc., because these types contain non-finite values, which cannot be roundtripped through Rational.

Methods

Instances97Real, …
  • Real Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Real TimeSpecDefined in clock-0.8.4 · System.Clock
  • Real SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Real IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Real NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Real CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Real IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Real WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Real HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Real Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Real ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Real WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Real ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Real WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Real CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Real DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that toRational generates garbage for non-finite arguments:

    Example2 expressions
    toRational (1/0)179769313 (and 300 more digits...) % 1toRational (0/0)269653970 (and 300 more digits...) % 1
  • Real FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that toRational generates garbage for non-finite arguments:

    Example2 expressions
    toRational (1/0 :: Float)340282366920938463463374607431768211456 % 1toRational (0/0 :: Float)510423550381407695195061911147652317184 % 1
  • Real IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Real WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Real Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Real Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Real Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Real Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Real HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Real CardinalityDefined in random-1.3.1 · System.Random.GFinite

    This is needed only as a superclass of Integral.

  • Real ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    WARNING: toRational needs to compute the Integer magnitude: 10^e. If applied to a huge exponent this could fill up all space and crash your program!

    Avoid applying toRational (or realToFrac) to scientific numbers coming from an untrusted source and use toRealFloat instead. The latter guards against excessive space usage.

  • Real I8Defined in text-2.1.3 · Data.Text.Foreign
  • Real DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Real NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Real StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Real StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Real BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Integral a => Real (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Real a => Real (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Real a => Real (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Real a => Real (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Real a => Real (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • Real a => Real (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • HasResolution a => Real (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Real a => Real (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • Real a => Real (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • Real (f (g a)) => Real (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
classclass (Real a, Fractional a) => RealFrac a where
#

Extracting components of fractions.

Methods

Instances17RealFrac, …
  • RealFrac SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • RealFrac CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • RealFrac CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • RealFrac DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that results for non-finite arguments are garbage:

    Example2 expressions
    [ f x | f <- [round, floor, ceiling], x <- [-1/0, 0/0, 1/0] ] :: [Int][0,0,0,0,0,0,0,0,0]map properFraction [-1/0, 0/0, 1/0] :: [(Int, Double)][(0,0.0),(0,0.0),(0,0.0)]

    and get even more non-sensical if you ask for Integer instead of Int.

  • RealFrac FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that results for non-finite arguments are garbage:

    Example2 expressions
    [ f x | f <- [round, floor, ceiling], x <- [-1/0, 0/0, 1/0 :: Float] ] :: [Int][0,0,0,0,0,0,0,0,0]map properFraction [-1/0, 0/0, 1/0] :: [(Int, Float)][(0,0.0),(0,0.0),(0,0.0)]

    and get even more non-sensical if you ask for Integer instead of Int.

  • RealFrac HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • RealFrac ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    WARNING: the methods of the RealFrac instance need to compute the magnitude 10^e. If applied to a huge exponent this could take a long time. Even worse, when the destination type is unbounded (i.e. Integer) it could fill up all space and crash your program!

  • RealFrac DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • RealFrac NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Integral a => RealFrac (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • RealFrac a => RealFrac (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • RealFrac a => RealFrac (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity
  • RealFrac a => RealFrac (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord
  • HasResolution a => RealFrac (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • RealFrac a => RealFrac (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const
  • RealFrac a => RealFrac (Tagged s a)Defined in tagged-0.8.11 · Data.Tagged
  • RealFrac (f (g a)) => RealFrac (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
classclass HasField (x :: k) (r :: TYPE r_rep) (a :: TYPE a_rep) | x r -> a where
#

Constraint representing the fact that the field x belongs to the record type r and has field type a. This will be solved automatically, but manual instances may be provided as well.

Methods

  • getField :: r -> a

    Selector function to extract the field from the record.

classclass Show a where
#

Conversion of values to readable Strings.

Derived instances of Show have the following properties, which are compatible with derived instances of Text.Read.Read:

  • The result of show is 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 showsPrec will produce infix applications of the constructor.

  • the representation will be enclosed in parentheses if the precedence of the top-level constructor in x is less than d (associativity is ignored). Thus, if d is 0 then the result is never surrounded in parentheses; if d is 11 it is always surrounded in parentheses, unless it is an atomic expression.

  • If the constructor is defined using record syntax, then show will 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 = 5

Note that right-associativity of :^: is ignored. For example,

  • show (Leaf 1 :^: Leaf 2 :^: Leaf 3) produces the string "Leaf 1 :^: (Leaf 2 :^: Leaf 3)".

Instances620Show, …
  • Show ASCIIStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show PrintableStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show UnicodeStringDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show ADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show BDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show CDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show OrdADefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show OrdBDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show OrdCDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Poly
  • Show WitnessDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Property
  • Show QCGenDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Random
  • Show ConfidenceDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.State
  • Show TestProgressDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.State
  • Show ArgsDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Test
  • Show ResultDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Test
  • Show CellDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Text
  • Show StrDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Text
  • Show LitDefined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • Show NumberDefined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • Show KeyDefined in aeson-2.2.5.1 · Data.Aeson.Key
  • Show AesonExceptionDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show DotNetTimeDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show JSONPathElementDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show OptionsDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show SumEncodingDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show ValueDefined in aeson-2.2.5.1 · Data.Aeson.Types.Internal

    Since version 1.5.6.0 version object values are printed in lexicographic key order

    Example1 expression
    toJSON $ H.fromList [("a", True), ("z", False)]Object (fromList [("a",Bool True),("z",Bool False)])
    Example1 expression
    toJSON $ H.fromList [("z", False), ("a", True)]Object (fromList [("a",Bool True),("z",Bool False)])
  • Show AsyncCancelledDefined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Show ExceptionInLinkedThreadDefined in async-2.2.6 · Control.Concurrent.Async.Internal
  • Show WardenExceptionDefined in async-2.2.6 · Control.Concurrent.Async.Warden
  • Show ByteArrayDefined in base-4.22.0.0 · Data.Array.Byte
  • Show CCFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show ConcFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show DebugFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show DoCostCentresDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show DoHeapProfileDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show DoTraceDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show GCFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show GiveGCStatsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show HpcFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show IoManagerFlagDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show MiscFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show ParFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show ProfFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show RTSFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show TickyFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show TraceFlagsDefined in base-4.22.0.0 · GHC.RTS.Flags
  • Show GCDetailsDefined in base-4.22.0.0 · GHC.Stats
  • Show RTSStatsDefined in base-4.22.0.0 · GHC.Stats
  • Show TimeoutDefined in base-4.22.0.0 · System.Timeout
  • Show OptionsDefined in bifunctors-5.6.3 · Data.Bifunctor.TH
  • Show BuilderDefined in bytestring-0.12.2.0 · Data.ByteString.Builder · orphan
  • Show FormatModeDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat
  • Show FloatingDecimalDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.D2S
  • Show FloatingDecimalDefined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.F2S
  • Show ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Show SizeOverflowExceptionDefined in bytestring-0.12.2.0 · Data.ByteString.Internal.Type
  • Show ByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Lazy.Internal
  • Show ShortByteStringDefined in bytestring-0.12.2.0 · Data.ByteString.Short.Internal
  • Show Int54Defined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Show JSStringDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Show JSValueDefined in canonical-json-0.6.0.1 · Text.JSON.Canonical.Types
  • Show CountFailureDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.GHC.Heap.Size
  • Show ClosureTreeOptionsDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.GHC.Heap.Tree
  • Show TraverseCyclicClosuresDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.GHC.Heap.Tree
  • Show TreeDepthDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.GHC.Heap.Tree
  • Show SchemaErrorDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical
  • Show FatalErrorDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Panic
  • Show ByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray
  • Show SlicedByteArrayDefined in cborg-0.2.10.0 · Codec.CBOR.ByteArray.Sliced
  • Show TokenTypeDefined in cborg-0.2.10.0 · Codec.CBOR.Decoding
  • Show EncodingDefined in cborg-0.2.10.0 · Codec.CBOR.Encoding
  • Show TokensDefined in cborg-0.2.10.0 · Codec.CBOR.Encoding
  • Show LocDefined in cborg-0.2.10.0 · Codec.CBOR.FlatTerm
  • Show TermTokenDefined in cborg-0.2.10.0 · Codec.CBOR.FlatTerm
  • Show DeserialiseFailureDefined in cborg-0.2.10.0 · Codec.CBOR.Read
  • Show TermDefined in cborg-0.2.10.0 · Codec.CBOR.Term
  • Show ClockDefined in clock-0.8.4 · System.Clock
  • Show TimeSpecDefined in clock-0.8.4 · System.Clock
  • Show SecondsDefined in clock-0.8.4 · System.Clock.Seconds
  • Show IntSetDefined in containers-0.8 · Data.IntSet.Internal
  • Show IntersectionDefined in containers-0.8 · Data.IntSet.Internal
  • Show BitQueueDefined in containers-0.8 · Utils.Containers.Internal.BitQueue
  • Show BitQueueBDefined in containers-0.8 · Utils.Containers.Internal.BitQueue
  • Show FileTypeDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Show PermissionsDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Show WhetherFollowDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Show XdgDirectoryDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Show XdgDirectoryListDefined in directory-1.3.10.0 · System.Directory.Internal.Common
  • Show TimeoutDefined in extra-1.8 · System.Time.Extra
  • Show ForallVisFlagDefined in ghc-boot-th-9.14.1 · GHC.Boot.TH.Ppr
  • Show DocDefined in ghc-boot-th-9.14.1 · GHC.Boot.TH.PprLib
  • Show VoidDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show ByteOrderDefined in ghc-internal-9.1401.0 · GHC.Internal.ByteOrder
  • Show ClosureTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.ClosureTypes
  • Show BlockReasonDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Show ThreadIdDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Show ThreadStatusDefined in ghc-internal-9.1401.0 · GHC.Internal.Conc.Sync
  • Show NestedAtomicallyDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show NoMatchingContinuationPromptDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show NoMethodErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show NonTerminationDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show PatternMatchFailDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show RecConErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show RecSelErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show RecUpdErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show TypeErrorDefined in ghc-internal-9.1401.0 · GHC.Internal.Control.Exception.Base
  • Show ConstrDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Show ConstrRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Show DataRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Show DataTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Show FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Show DynamicDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Dynamic
  • Show AllDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show AnyDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show SomeTypeRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Show VersionDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Version
  • Show ControlMessageDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Control
  • Show EPollFdDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Show EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Show EventTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPoll
  • Show EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Show EventLifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Show LifetimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Show TimeoutDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Internal.Types
  • Show FdKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Manager
  • Show StateDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Manager
  • Show EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Poll
  • Show PollFdDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Poll
  • Show StateDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.TimerManager
  • Show UniqueDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.Unique
  • Show ErrorCallDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception
  • Show ArithExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Show SomeExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Show WhileHandlingDefined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Show FingerprintDefined in ghc-internal-9.1401.0 · GHC.Internal.Fingerprint.Type
  • Show CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.Types
  • Show IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Show WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Ptr
  • Show ForeignSrcLangDefined in ghc-internal-9.1401.0 · GHC.Internal.ForeignSrcLang
  • Show AssociativityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show BoxDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show PrimTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show TsoFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show WhatNextDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show WhyBlockedDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Show StgInfoTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.Types
  • Show CostCentreDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Show CostCentreStackDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Show IndexTableDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Show StgTSOProfInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.ProfInfo.Types
  • Show MaskingStateDefined in ghc-internal-9.1401.0 · GHC.Internal.IO
  • Show SeekModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Device
  • Show CodingFailureModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Encoding.Failure
  • Show CodingProgressDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Encoding.Types
  • Show TextEncodingDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Encoding.Types
  • Show AllocationLimitExceededDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show ArrayExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show AssertionFailedDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show AsyncExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show BlockedIndefinitelyOnMVarDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show BlockedIndefinitelyOnSTMDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show CompactionFailedDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show DeadlockDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show ExitCodeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show FixIOExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show IOErrorTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show IOExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show SomeAsyncExceptionDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Exception
  • Show FDDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.FD
  • Show HandlePosnDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle
  • Show FileLockingNotSupportedDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Lock.Common
  • Show BufferModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show HandleDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show HandleTypeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show NewlineDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show NewlineModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Types
  • Show IOModeDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.IOMode
  • Show IoSubSystemDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.SubSystem
  • Show InfoProvDefined in ghc-internal-9.1401.0 · GHC.Internal.InfoProv.Types
  • Show Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Int
  • Show ExtensionDefined in ghc-internal-9.1401.0 · GHC.Internal.LanguageExtensions
  • Show CCFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show ConcFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show DebugFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show DoCostCentresDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show DoHeapProfileDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show DoTraceDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show GCFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show GiveGCStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show HpcFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show IoManagerFlagDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show MiscFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show ParFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show ProfFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show RTSFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show TickyFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show TraceFlagsDefined in ghc-internal-9.1401.0 · GHC.Internal.RTS.Flags
  • Show FractionalExponentBaseDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Show ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Show WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Constants
  • Show ByteOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Show WordOffsetDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.ConstantsProf
  • Show PointernessDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Decode
  • Show StackEntryDefined in ghc-internal-9.1401.0 · GHC.Internal.Stack.Decode
  • Show CallStackDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show SrcLocDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show StaticPtrInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.StaticPtr
  • Show GCDetailsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Show RTSStatsDefined in ghc-internal-9.1401.0 · GHC.Internal.Stats
  • Show CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CTimerDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.Types
  • Show AnnLookupDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show AnnTargetDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show BangDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show BndrVisDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show BodyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show BytesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show CallconvDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ConDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show DecDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show DecidedStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show DerivClauseDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show DerivStrategyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show DocLocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ExpDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show FamilyResultSigDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show FixityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show FixityDirectionDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ForeignDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show FunDepDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show GuardDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show InfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show InjectivityAnnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show InlineDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show LitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show LocDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show MatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ModNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show ModuleInfoDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show NameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show NameFlavourDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show NameSpaceDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show NamespaceSpecifierDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show OccNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show OverlapDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PatDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PatSynArgsDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PatSynDirDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PhasesDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PkgNameDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show PragmaDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show RangeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show RoleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show RuleBndrDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show RuleMatchDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show SafetyDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show SourceStrictnessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show SourceUnpackednessDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show SpecificityDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show StmtDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show TyLitDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show TySynEqnDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show TypeDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show TypeFamilyHeadDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show LexemeDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.Read.Lex
  • Show NumberDefined in ghc-internal-9.1401.0 · GHC.Internal.Text.Read.Lex
  • Show SomeCharDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Show SomeSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Show SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Show BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan
  • Show FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan
  • Show IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show KindRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show LevityDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show ModuleDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show OrderingDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show RuntimeRepDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show TrNameDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show TyConDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show TypeLitSortDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show VecCountDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show VecElemDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show GeneralCategoryDefined in ghc-internal-9.1401.0 · GHC.Internal.Unicode
  • Show Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show HalfDefined in half-0.3.3 · Numeric.Half.Internal
  • Show URIDefined in network-uri-2.6.4.2 · Network.URI
  • Show URIAuthDefined in network-uri-2.6.4.2 · Network.URI
  • Show TimeLocaleDefined in old-locale-1.0.0.7 · System.Locale
  • Show EncodingExceptionDefined in os-string-2.0.8 · System.OsString.Encoding.Internal
  • Show OsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Show OsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    On windows, decodes as UCS-2. On unix prints the raw bytes without decoding.

  • Show PosixCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Show PosixStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Prints the raw bytes without decoding.

  • Show WindowsCharDefined in os-string-2.0.8 · System.OsString.Internal.Types
  • Show WindowsStringDefined in os-string-2.0.8 · System.OsString.Internal.Types

    Decodes as UCS-2.

  • Show ParseErrorDefined in parsec-3.1.18.0 · Text.Parsec.Error
  • Show SourcePosDefined in parsec-3.1.18.0 · Text.Parsec.Pos
  • Show ModeDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show StyleDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show TextDetailsDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Show DocDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJ
  • Show PrettyLevelDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Show CmdSpecDefined in process-1.6.26.1 · System.Process.Common
  • Show CreateProcessDefined in process-1.6.26.1 · System.Process.Common
  • Show StdStreamDefined in process-1.6.26.1 · System.Process.Common
  • Show CommunicationHandleDefined in process-1.6.26.1 · System.Process.CommunicationHandle.Internal
  • Show CardinalityDefined in random-1.3.1 · System.Random.GFinite
  • Show StdGenDefined in random-1.3.1 · System.Random.Internal
  • Show ScientificDefined in scientific-0.3.9.0 · Data.Scientific

    See formatScientific if you need more control over the rendering.

  • Show SMGenDefined in splitmix-0.1.3.2 · System.Random.SplitMix
  • Show SMGenDefined in splitmix-0.1.3.2 · System.Random.SplitMix32
  • Show DecodingDefined in text-2.1.3 · Data.Text.Encoding
  • Show UnicodeExceptionDefined in text-2.1.3 · Data.Text.Encoding.Error
  • Show I8Defined in text-2.1.3 · Data.Text.Foreign
  • Show TextDefined in text-2.1.3 · Data.Text.Show · orphan
  • Show BuilderDefined in text-2.1.3 · Data.Text.Internal.Builder
  • Show PartialUtf8CodePointDefined in text-2.1.3 · Data.Text.Internal.Encoding
  • Show Utf8StateDefined in text-2.1.3 · Data.Text.Internal.Encoding
  • Show DecoderStateDefined in text-2.1.3 · Data.Text.Internal.Encoding.Utf8
  • Show SizeDefined in text-2.1.3 · Data.Text.Internal.Fusion.Size
  • Show TextDefined in text-2.1.3 · Data.Text.Lazy · orphan
  • Show FPFormatDefined in text-2.1.3 · Data.Text.Lazy.Builder.RealFloat
  • Show IterDefined in text-2.1.3 · Data.Text.Unsafe
  • Show ShortTextDefined in text-short-0.1.6.1 · Data.Text.Short.Internal
  • Show ConstructorInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show ConstructorVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show DatatypeInfoDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show DatatypeVariantDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show FieldStrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show StrictnessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show UnpackednessDefined in th-abstraction-0.7.2.0 · Language.Haskell.TH.Datatype
  • Show CalendarDiffDaysDefined in time-1.15 · Data.Time.Format.ISO8601 · orphan
  • Show DayDefined in time-1.15 · Data.Time.Calendar.Gregorian · orphan
  • Show MonthDefined in time-1.15 · Data.Time.Calendar.Month

    Show as yyyy-mm.

  • Show QuarterDefined in time-1.15 · Data.Time.Calendar.Quarter

    Show as yyyy-Qn.

  • Show QuarterOfYearDefined in time-1.15 · Data.Time.Calendar.Quarter
  • Show DayOfWeekDefined in time-1.15 · Data.Time.Calendar.Week
  • Show AbsoluteTimeDefined in time-1.15 · Data.Time.Clock.TAI · orphan
  • Show DiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.DiffTime
  • Show NominalDiffTimeDefined in time-1.15 · Data.Time.Clock.Internal.NominalDiffTime
  • Show SystemTimeDefined in time-1.15 · Data.Time.Clock.Internal.SystemTime
  • Show UTCTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.ZonedTime · orphan
  • Show UniversalTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.LocalTime · orphan
  • Show TimeLocaleDefined in time-1.15 · Data.Time.Format.Locale
  • Show CalendarDiffTimeDefined in time-1.15 · Data.Time.Format.ISO8601 · orphan
  • Show LocalTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.LocalTime
  • Show TimeOfDayDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeOfDay
  • Show TimeZoneDefined in time-1.15 · Data.Time.LocalTime.Internal.TimeZone

    This only shows the time zone name, or offset if the name is empty.

  • Show ZonedTimeDefined in time-1.15 · Data.Time.LocalTime.Internal.ZonedTime

    For the time zone, this only shows the name, or offset if the name is empty.

  • Show DirTypeDefined in unix-2.8.8.0 · System.Posix.Directory.Common
  • Show DLDefined in unix-2.8.8.0 · System.Posix.DynamicLinker.Prim
  • Show RTLDFlagsDefined in unix-2.8.8.0 · System.Posix.DynamicLinker.Prim
  • Show CAttributesDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Show StatxFlagsDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Show StatxMaskDefined in unix-2.8.8.0 · System.Posix.Files.Common
  • Show OpenFileFlagsDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Show OpenModeDefined in unix-2.8.8.0 · System.Posix.IO.Common
  • Show ProcessStatusDefined in unix-2.8.8.0 · System.Posix.Process.Internals
  • Show ResourceDefined in unix-2.8.8.0 · System.Posix.Resource
  • Show ResourceLimitDefined in unix-2.8.8.0 · System.Posix.Resource
  • Show ResourceLimitsDefined in unix-2.8.8.0 · System.Posix.Resource
  • Show BaudRateDefined in unix-2.8.8.0 · System.Posix.Terminal.Common
  • Show GroupEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Show UserEntryDefined in unix-2.8.8.0 · System.Posix.User.Common
  • Show SubHashPathDefined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Show UUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal

    Pretty prints a UUID (without quotation marks). See also toString.

    Example1 expression
    show nil"00000000-0000-0000-0000-000000000000"
  • Show UnpackedUUIDDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal
  • Show SizeDefined in vector-0.13.2.0 · Data.Vector.Fusion.Bundle.Size
  • Show ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show1 f => Show (Fix f)Defined in data-fix-0.3.4 · Data.Fix
  • Show (Blind a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show (Encoding' a)Defined in aeson-2.2.5.1 · Data.Aeson.Encoding.Internal
  • Show (ConstPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.ConstPtr
  • Show (ForeignPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ForeignPtr
  • Show (FunPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Show (Ptr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Ptr
  • Show (SChar c)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Show (SSymbol s)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • Show (SNat n)Defined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Show (Doc a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show (Seed g)Defined in random-1.3.1 · System.Random.Internal
  • Show a => Show (Fixed a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (InfiniteList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Large a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Negative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (NoShrink a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (NonEmptyList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (NonNegative a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (NonPositive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (NonZero a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (OrderedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Positive a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Shrink2 a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Small a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (Smart a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (SortedList a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • Show a => Show (IResult a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show a => Show (Result a)Defined in aeson-2.2.5.1 · Data.Aeson.Types.Internal
  • Show a => Show (Complex a)Defined in base-4.22.0.0 · Data.Complex
  • Show a => Show (First a)Defined in base-4.22.0.0 · Data.Semigroup
  • Show a => Show (Last a)Defined in base-4.22.0.0 · Data.Semigroup
  • Show a => Show (Max a)Defined in base-4.22.0.0 · Data.Semigroup
  • Show a => Show (Min a)Defined in base-4.22.0.0 · Data.Semigroup
  • Show a => Show (Decoder a)Defined in binary-0.8.9.3 · Data.Binary.Get.Internal
  • Show a => Show (DecodedToken a)Defined in cborg-0.2.10.0 · Codec.CBOR.Read
  • Show a => Show (LongToken a)Defined in cborg-0.2.10.0 · Codec.CBOR.Read
  • Show a => Show (IntMap a)Defined in containers-0.8 · Data.IntMap.Internal
  • Show a => Show (Seq a)Defined in containers-0.8 · Data.Sequence.Internal
  • Show a => Show (ViewL a)Defined in containers-0.8 · Data.Sequence.Internal
  • Show a => Show (ViewR a)Defined in containers-0.8 · Data.Sequence.Internal
  • Show a => Show (Intersection a)Defined in containers-0.8 · Data.Set.Internal
  • Show a => Show (Set a)Defined in containers-0.8 · Data.Set.Internal
  • Show a => Show (PostOrder a)Defined in containers-0.8 · Data.Tree
  • Show a => Show (Tree a)Defined in containers-0.8 · Data.Tree
  • Show a => Show (DNonEmpty a)Defined in dlist-1.0 · Data.DList.DNonEmpty.Internal
  • Show a => Show (DList a)Defined in dlist-1.0 · Data.DList.Internal
  • Show a => Show (ExitCase a)Defined in exceptions-0.10.11 · Control.Monad.Catch
  • Show a => Show (RB a)Defined in extra-1.8 · Data.List.Extra
  • Show a => Show (Hex a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Show a => Show (Shown a)Defined in formatting-7.2.0 · Data.Text.Format.Types
  • Show a => Show (NonEmpty a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show a => Show (And a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Iff a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Ior a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Xor a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Bits
  • Show a => Show (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Identity

    This instance would be equivalent to the derived instances of the Identity newtype if the runIdentity field were removed

  • Show a => Show (First a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Show a => Show (Last a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Show a => Show (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Ord

    This instance would be equivalent to the derived instances of the Down newtype if the getDown field were removed

  • Show a => Show (Dual a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show a => Show (Product a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show a => Show (Sum a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show a => Show (ExceptionWithContext a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Show a => Show (ZipList a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Functor.ZipList
  • Show a => Show (Maybe a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show a => Show (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Show a => Show (Hashed a)Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Show a => Show (AnnotDetails a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show a => Show (Span a)Defined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJ
  • Show a => Show (Array a)Defined in primitive-0.9.1.0 · Data.Primitive.Array
  • Show a => Show (SmallArray a)Defined in primitive-0.9.1.0 · Data.Primitive.SmallArray
  • Show a => Show (Maybe a)Defined in strict-0.5.1 · Data.Strict.Maybe
  • Show a => Show (Array a)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Array
  • Show a => Show (HashSet a)Defined in unordered-containers-0.2.21 · Data.HashSet.Internal
  • Show a => Show (Vector a)Defined in vector-0.13.2.0 · Data.Vector
  • Show a => Show (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Strict
  • Show a => Show (a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show a => Show [a]Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show b => Show (GenClosure b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show b => Show (GenStackField b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show b => Show (GenStackFrame b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show b => Show (GenStgStackClosure b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Heap.Closures
  • Show e => Show (NoBacktrace e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Exception.Type
  • Show flag => Show (TyVarBndr flag)Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Syntax
  • Show g => Show (StateGen g)Defined in random-1.3.1 · System.Random.Internal
  • Show g => Show (AtomicGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Show g => Show (IOGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Show g => Show (STGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Show g => Show (TGen g)Defined in random-1.3.1 · System.Random.Stateful
  • Show k => Show (Error k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Show k => Show (Validity k)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal.Debug
  • Show m => Show (WrappedMonoid m)Defined in base-4.22.0.0 · Data.Semigroup
  • Show p => Show (Par1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show v => Show (KeyMap v)Defined in aeson-2.2.5.1 · Data.Aeson.KeyMap
  • Show vertex => Show (SCC vertex)Defined in containers-0.8 · Data.Graph
  • (Functor f, Show1 f) => Show (Mu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Functor f, Show1 f) => Show (Nu f)Defined in data-fix-0.3.4 · Data.Fix
  • (Show a, Storable a) => Show (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Storable
  • (Show a, Prim a) => Show (PrimArray a)Defined in primitive-0.9.1.0 · Data.Primitive.PrimArray
  • (Show a, Prim a) => Show (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Primitive
  • (Show a, Unbox a) => Show (Vector a)Defined in vector-0.13.2.0 · Data.Vector.Unboxed · orphan
  • HasResolution a => Show (Fixed a)Defined in base-4.22.0.0 · Data.Fixed
  • Show (Proxy s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Proxy
  • Show (TypeRep a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Typeable.Internal
  • Show (U1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (UAddr p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (V1 p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.ST
  • Show (a -> b)Defined in base-4.22.0.0 · Text.Show.Functions · orphan
  • Show (f a) => Show (Zippy f a)Defined in semialign-1.4 · Data.Zip
  • Show a => Show (Shrinking s a)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Modifiers
  • (Show1 f, Show a) => Show (Lift f a)Defined in transformers-0.6.1.2 · Control.Applicative.Lift
  • (Show1 m, Show a) => Show (MaybeT m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Maybe
  • (Ix a, Show a, Show b) => Show (Array a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Arr
  • (Ix ix, Show ix, Show e, IArray UArray e) => Show (UArray ix e)Defined in array-0.5.8.0 · Data.Array.Base
  • (Show a, Show b) => Show (Fun a b)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • (Show a, Show b) => Show (Arg a b)Defined in base-4.22.0.0 · Data.Semigroup
  • (Show a, Show b) => Show (Either a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Either
  • (Show a, Show b) => Show (Either a b)Defined in strict-0.5.1 · Data.Strict.Either
  • (Show a, Show b) => Show (These a b)Defined in strict-0.5.1 · Data.Strict.These
  • (Show a, Show b) => Show (Pair a b)Defined in strict-0.5.1 · Data.Strict.Tuple
  • (Show a, Show b) => Show (These a b)Defined in these-1.2.1 · Data.These
  • (Show a, Show b) => Show (a, b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b) => Show (a :-> b)Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • (Show k, Show a) => Show (Map k a)Defined in containers-0.8 · Data.Map.Internal
  • (Show k, Show e) => Show (TkArray k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Show k, Show e) => Show (TkRecord k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Show k, Show e) => Show (Tokens k e)Defined in aeson-2.2.5.1 · Data.Aeson.Decoding.Tokens
  • (Show k, Show v) => Show (HashMap k v)Defined in unordered-containers-0.2.21 · Data.HashMap.Internal
  • (GShow (Rep1 f a), Generic1 f) => Show (FunctorClassesDefault f a)Defined in transformers-compat-0.7.2 · Data.Functor.Classes.Generic.Internal
  • Show (Coercion a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Coercion
  • Show (OrderingI a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Ord
  • Show (URec Char p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Int p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Word p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (a :~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Show (bi a b) => Show (Biap bi a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biap
  • Show (f a) => Show (Ap f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Monoid
  • Show (f a) => Show (Alt f a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Semigroup.Internal
  • Show (f p) => Show (Rec1 f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (p (Fix p a) a) => Show (Fix p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Fix
  • Show (p a a) => Show (Join p a)Defined in bifunctors-5.6.3 · Data.Bifunctor.Join
  • Show a => Show (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const

    This instance would be equivalent to the derived instances of the Const newtype if the getConst field were removed

  • Show a => Show (Constant a b)Defined in transformers-0.6.1.2 · Data.Functor.Constant
  • Show b => Show (Tagged s b)Defined in tagged-0.8.11 · Data.Tagged
  • (Show1 f, Show a) => Show (Backwards f a)Defined in transformers-0.6.1.2 · Control.Applicative.Backwards
  • (Show1 f, Show a) => Show (IdentityT f a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Identity
  • (Show1 f, Show a) => Show (Reverse f a)Defined in transformers-0.6.1.2 · Data.Functor.Reverse
  • (Show (f a), Show (g a), Show a) => Show (These1 f g a)Defined in these-1.2.1 · Data.Functor.These
  • (Show a, Show b, Show c) => Show (a, b, c)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show e, Show1 m, Show a) => Show (ExceptT e m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Except
  • (Show w, Show1 m, Show a) => Show (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Lazy
  • (Show w, Show1 m, Show a) => Show (WriterT w m a)Defined in transformers-0.6.1.2 · Control.Monad.Trans.Writer.Strict
  • Show (a :~~: b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Equality
  • Show c => Show (K1 i c p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Show (f a), Show (g a)) => Show (Product f g a)Defined in base-4.22.0.0 · Data.Functor.Product
  • (Show (f a), Show (g a)) => Show (Sum f g a)Defined in base-4.22.0.0 · Data.Functor.Sum
  • (Show (f p), Show (g p)) => Show ((:*:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Show (f p), Show (g p)) => Show ((:+:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • (Show a, Show b, Show c, Show d) => Show (a, b, c, d)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show (f (g a)) => Show (Compose f g a)Defined in base-4.22.0.0 · Data.Functor.Compose
  • Show (f (g p)) => Show ((:.:) f g p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (f a) => Show (Clown f a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Clown
  • Show (f p) => Show (M1 i c f p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (g b) => Show (Joker g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Joker
  • Show (p a b) => Show (WrappedBifunctor p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Wrapped
  • Show (p b a) => Show (Flip p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Flip
  • (Show a, Show b, Show c, Show d, Show e) => Show (a, b, c, d, e)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show (f a b), Show (g a b)) => Show (Product f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Product
  • (Show (p a b), Show (q a b)) => Show (Sum p q a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Sum
  • (Show a, Show b, Show c, Show d, Show e, Show f) => Show (a, b, c, d, e, f)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show (f (p a b)) => Show (Tannen f p a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Tannen
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g) => Show (a, b, c, d, e, f, g)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h) => Show (a, b, c, d, e, f, g, h)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Show (p (f a) (g b)) => Show (Biff p f g a b)Defined in bifunctors-5.6.3 · Data.Bifunctor.Biff
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i) => Show (a, b, c, d, e, f, g, h, i)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j) => Show (a, b, c, d, e, f, g, h, i, j)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k) => Show (a, b, c, d, e, f, g, h, i, j, k)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l) => Show (a, b, c, d, e, f, g, h, i, j, k, l)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • (Show a, Show b, Show c, Show d, Show e, Show f, Show g, Show h, Show i, Show j, Show k, Show l, Show m, Show n, Show o) => Show (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)Defined in ghc-internal-9.1401.0 · GHC.Internal.Show
datadata CostCentre
#

A cost-centre from GHC's cost-center profiler.

datadata CostCentreStack
#

A cost-centre stack from GHC's cost-center profiler.

datadata CallStack
#

CallStacks are a lightweight method of obtaining a partial call-stack at any point in the program.

A function can request its call-site with the HasCallStack constraint. For example, we can define

putStrLnWithCallStack :: HasCallStack => String -> IO ()

as a variant of putStrLn that will get its call-site and print it, along with the string given as argument. We can access the call-stack inside putStrLnWithCallStack with callStack.

Example1 expression
:{putStrLnWithCallStack :: HasCallStack => String -> IO ()putStrLnWithCallStack msg = do  putStrLn msg  putStrLn (prettyCallStack callStack):}

Thus, if we call putStrLnWithCallStack we will get a formatted call-stack alongside our string.

Example1 expression
putStrLnWithCallStack "hello"helloCallStack (from HasCallStack):  putStrLnWithCallStack, called at <interactive>:... in interactive:Ghci...

GHC solves HasCallStack constraints in three steps:

  1. If there is a CallStack in scope -- i.e. the enclosing function has a HasCallStack constraint -- GHC will append the new call-site to the existing CallStack.

  2. If there is no CallStack in scope -- e.g. in the GHCi session above -- and the enclosing definition does not have an explicit type signature, GHC will infer a HasCallStack constraint for the enclosing definition (subject to the monomorphism restriction).

  3. If there is no CallStack in scope and the enclosing definition has an explicit type signature, GHC will solve the HasCallStack constraint for the singleton CallStack containing just the current call-site.

CallStacks do not interact with the RTS and do not require compilation with -prof. On the other hand, as they are built up explicitly via the HasCallStack constraints, they will generally not contain as much information as the simulated call-stacks maintained by the RTS.

A CallStack is a [(String, SrcLoc)]. The String is the name of function that was called, the SrcLoc is the call-site. The list is ordered with the most recently called function at the head.

NOTE: The intrepid user may notice that HasCallStack is just an alias for an implicit parameter ?callStack :: CallStack. This is an implementation detail and should not be considered part of the CallStack API, we may decide to change the implementation in the future.

Instances4IsList, Show, NFData, Item
typetype HasCallStack = IP "callStack" CallStack
#

Request a CallStack.

NOTE: The implicit parameter ?callStack :: CallStack is an implementation detail and should not be considered part of the CallStack API, we may decide to change the implementation in the future.

datadata SrcLoc
#

A single location in the source code.

Instances5Eq, Show, Generic, NFData, Rep
classclass KnownSymbol (n :: Symbol) where
#

This class gives the string associated with a type-level symbol. There are instances of the class for every concrete literal: "hello", etc.

classclass KnownNat (n :: Nat) where
#

This class gives the integer associated with a type-level natural. There are instances of the class for every concrete literal: 0, 1, 2, etc.

typetype Nat = Natural
#

A type synonym for Natural.

Previously, this was an opaque data type, but it was changed to a type synonym.

Instances1HasResolution
  • KnownNat n => HasResolution nDefined in base-4.22.0.0 · Data.Fixed

    For example, Fixed 1000 will give you a Fixed with a resolution of 1000.

datadata SomeNat
#

This type represents unknown type-level natural numbers.

Constructors

Instances4Eq, Ord, Read, Show
  • Eq SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Ord SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Read SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • Show SomeNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
newtypenewtype IO a
#

A value of type IO a is a computation which, when performed, does some I/O before returning a value of type a.

There is really only one way to "perform" an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main.

IO is a monad, so IO actions can be combined using either the do-notation or the Prelude.>> and Prelude.>>= operations from the Prelude.Monad class.

Instances47Monad, Functor, MonadFix, MonadFail, Applicative, GHCiSandboxIO, …
datadata Ordering
#
Instances23Bounded, Enum, Eq, Data, Ord, Read, …
datadata GeneralCategory
#

Unicode General Categories (column 2 of the UnicodeData table) in the order they are listed in the Unicode standard (the Unicode Character Database, in particular).

Examples

Basic usage:

Example1 expression
:t OtherLetterOtherLetter :: GeneralCategory

Eq instance:

Example2 expressions
UppercaseLetter == UppercaseLetterTrueUppercaseLetter == LowercaseLetterFalse

Ord instance:

Example1 expression
NonSpacingMark <= MathSymbolTrue

Enum instance:

Example1 expression
enumFromTo ModifierLetter SpacingCombiningMark[ModifierLetter,OtherLetter,NonSpacingMark,SpacingCombiningMark]

Text.Read.Read instance:

Example2 expressions
read "DashPunctuation" :: GeneralCategoryDashPunctuationread "17" :: GeneralCategory*** Exception: Prelude.read: no parse

Show instance:

Example1 expression
show EnclosingMark"EnclosingMark"

Bounded instance:

Example2 expressions
minBound :: GeneralCategoryUppercaseLettermaxBound :: GeneralCategoryNotAssigned

Ix instance:

Example3 expressions
import GHC.Internal.Data.Ix ( index )index (OtherLetter,Control) FinalQuote12index (OtherLetter,Control) Format*** Exception: Error in array index

Constructors

Instances12Bounded, Enum, Eq, Ord, Read, Show, …
datadata Word16
#

16-bit unsigned integer type

Instances44Bounded, Enum, Eq, Integral, Data, Num, …
datadata Word32
#

32-bit unsigned integer type

Instances45Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Data Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Read Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ix Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • FiniteBits Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Storable Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Word32Defined in base-4.22.0.0 · Text.Printf
  • NFData Word32Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Mantissa Word32Defined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.Internal
  • Binary Word32Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Word32Defined in random-1.3.1 · System.Random
  • Finite Word32Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Word32Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Word32Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Word32Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Word32Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Word32Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Word32Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Word32Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Word32Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • ByteSource Word32Defined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
  • FromJSON Word32Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Word32Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Word32Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Word32Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Word32Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Word32Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Word32Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Word32Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • ReportSchemaErrors m => FromJSON m Word32Defined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • Monad m => ToJSON m Word32Defined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • MArray IOUArray Word32 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Word32 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Word32Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Word32Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type ByteSink Word32 g = Takes4Bytes gDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
datadata Word64
#

64-bit unsigned integer type

Instances45Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Data Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Read Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ix Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • FiniteBits Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Storable Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Word64Defined in base-4.22.0.0 · Text.Printf
  • NFData Word64Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Mantissa Word64Defined in bytestring-0.12.2.0 · Data.ByteString.Builder.RealFloat.Internal
  • Binary Word64Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Word64Defined in random-1.3.1 · System.Random
  • Finite Word64Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Word64Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Word64Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Word64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Word64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Word64Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Word64Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Word64Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Word64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • ByteSource Word64Defined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
  • FromJSON Word64Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Word64Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Word64Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Word64Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Word64Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Word64Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Word64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Word64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • ReportSchemaErrors m => FromJSON m Word64Defined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • Monad m => ToJSON m Word64Defined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • MArray IOUArray Word64 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Word64 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Word64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Word64Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type ByteSink Word64 g = Takes8Bytes gDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
datadata Word8
#

8-bit unsigned integer type

Instances42Bounded, Enum, Eq, Integral, Data, Num, …
  • Bounded Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Enum Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Eq Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Integral Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Data Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ord Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Read Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Show Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Ix Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Bits Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • FiniteBits Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Word
  • Storable Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg Word8Defined in base-4.22.0.0 · Text.Printf
  • NFData Word8Defined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary Word8Defined in binary-0.8.9.3 · Data.Binary.Class
  • Random Word8Defined in random-1.3.1 · System.Random
  • Finite Word8Defined in random-1.3.1 · System.Random.GFinite
  • Uniform Word8Defined in random-1.3.1 · System.Random.Internal
  • UniformRange Word8Defined in random-1.3.1 · System.Random.Internal
  • Arbitrary Word8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary Word8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function Word8Defined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable Word8Defined in hashable-1.5.1.0 · Data.Hashable.Class
  • Prim Word8Defined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox Word8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • ByteSource Word8Defined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
  • FromJSON Word8Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey Word8Defined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON Word8Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey Word8Defined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable Word8Defined in formatting-7.2.0 · Formatting.Buildable
  • Lift Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray Word8Defined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector Word8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector Word8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • MArray IOUArray Word8 IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Word8 (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • data MVector s Word8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector Word8Defined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type ByteSink Word8 g = Takes1Byte gDefined in uuid-types-1.0.6.1 · Data.UUID.Types.Internal.Builder
classclass Monad m => MonadError e (m :: Type -> Type) | m -> e where
#

The strategy of combining computations that can throw exceptions by bypassing bound functions from the point an exception is thrown to the point that it is handled.

Is parameterized over the type of error information and the monad type constructor. It is common to use Either String as the monad type constructor for an error monad in which error descriptions take the form of strings. In that case and many other common cases the resulting monad is already defined as an instance of the MonadError class. You can also define your own error type and/or use a monad type constructor other than Either String or Either IOError. In these cases you will have to explicitly define instances of the MonadError class. (If you are using the deprecated Control.Monad.Error or Control.Monad.Trans.Error, you may also have to define an Error instance.)

Methods

  • throwError :: e -> m a

    Is used within a monadic computation to begin exception processing.

  • catchError :: m a -> (e -> m a) -> m a

    A handler function to handle previous errors and return to normal execution. A common idiom is:

    do { action1; action2; action3 } `catchError` handler

    where the action functions can call throwError. Note that handler and the do-block must have the same return type.

Instances17MonadError, …
classclass Monad m => MonadReader r (m :: Type -> Type) | m -> r where
#

See examples in Control.Monad.Reader. Note, the partially applied function type (->) r is a simple reader monad. See the instance declaration below.

Methods

  • ask :: m r

    Retrieves the monad environment.

  • local :: (r -> r) -> m a -> m a

    Executes a computation in a modified environment.

  • reader :: (r -> a) -> m a

    Retrieves a function of the current environment.

Instances18MonadReader, …
classclass Monad m => MonadState s (m :: Type -> Type) | m -> s where
#

Minimal definition is either both of get and put or just state

Methods

  • get :: m s

    Return the state from the internals of the monad.

  • put :: s -> m ()

    Replace the state inside the monad.

  • state :: (s -> (a, s)) -> m a

    Embed a simple state action into the monad.

Instances17MonadState, …
typetype OnError a b = String -> Maybe a -> Maybe b
#

Function type for handling a coding error. It is supplied with two inputs:

  • A String that describes the error.

  • The input value that caused the error. If the error arose because the end of input was reached or could not be identified precisely, this value will be Nothing.

If the handler returns a value wrapped with Just, that value will be used in the output as the replacement for the invalid input. If it returns Nothing, no value will be used in the output.

Should the handler need to abort processing, it should use error or throw an exception (preferably a UnicodeException). It may use the description provided to construct a more helpful error report.

datadata Text
#

A space efficient, packed, unboxed Unicode text type.

Instances37IsList, Eq, Data, Ord, Read, Show, …
  • IsList TextDefined in text-2.1.3 · Data.Text · orphan

    Performs replacement on invalid scalar values:

    Example2 expressions
    :set -XOverloadedLists['\55555'] :: Text"\65533"
  • Eq TextDefined in text-2.1.3 · Data.Text · orphan
  • Data TextDefined in text-2.1.3 · Data.Text · orphan

    This instance preserves data abstraction at the cost of inefficiency. We omit reflection services for the sake of data abstraction.

    This instance was created by copying the updated behavior of Data.Set.Set and Data.Map.Data.Map.Map. If you feel a mistake has been made, please feel free to submit improvements.

    The original discussion is archived here: could we get a Data instance for Data.Text.Text?

    The followup discussion that changed the behavior of Set and Data.Map.Map is archived here: Proposal: Allow gunfold for Data.Map, ...

  • Ord TextDefined in text-2.1.3 · Data.Text · orphan
  • Read TextDefined in text-2.1.3 · Data.Text · orphan
  • Show TextDefined in text-2.1.3 · Data.Text.Show · orphan
  • IsString TextDefined in text-2.1.3 · Data.Text · orphan

    Performs replacement on invalid scalar values:

    Example2 expressions
    :set -XOverloadedStrings"\55555" :: Text"\65533"
  • Semigroup TextDefined in text-2.1.3 · Data.Text · orphan

    Beware: stimes will crash if the given number does not fit into an Int.

  • Monoid TextDefined in text-2.1.3 · Data.Text · orphan
  • PrintfArg TextDefined in text-2.1.3 · Data.Text · orphan
  • NFData TextDefined in text-2.1.3 · Data.Text · orphan
  • Binary TextDefined in text-2.1.3 · Data.Text · orphan
  • Hashable TextDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • FromJSON TextDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey TextDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON TextDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey TextDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable TextDefined in formatting-7.2.0 · Formatting.Buildable
  • FromBuilder TextDefined in formatting-7.2.0 · Formatting.FromBuilder
  • HasLength TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Base
  • ToByteString TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToLazyByteString TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToLazyText TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToString TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ToText TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • Print TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Show
  • Lift TextDefined in text-2.1.3 · Data.Text · orphan
  • Strict Text TextDefined in strict-0.5.1 · Data.Strict.Classes
  • Convertable Double TextDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Float TextDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • ConvertText String TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ConvertText Text StringDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ConvertText Text TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ConvertText Text TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • ConvertText Text TextDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.ConvertText
  • Monad m => Stream Text m CharDefined in parsec-3.1.18.0 · Text.Parsec.Prim
  • type Item Text = CharDefined in text-2.1.3 · Data.Text · orphan
methodlift :: Monad m => m a -> t m a
#

Lift a computation from the argument monad to the constructed monad.

typetype Except e = ExceptT e Identity
#

The parameterizable exception monad.

Computations are either exceptions (of any type) or normal values. These computations are plain values, and are unrelated to the Control.Exception mechanism, which is tied to the IO monad.

The return function returns a normal value, while >>= exits on the first exception. For a variant that continues after an error and collects all the errors, see Errors.

newtypenewtype ExceptT e (m :: Type -> Type) a
#

A monad transformer that adds exceptions to other monads.

ExceptT constructs a monad parameterized over two things:

  • e - An arbitrary exception type.

  • m - The inner monad.

The monadic computations are a plain values. They are unrelated to the Control.Exception mechanism, which is tied to the IO monad.

The return function yields a computation that produces the given value, while >>= sequences two subcomputations, exiting on the first exception.

Constructors

Instances44MonadRWS, Generic1, MonadAccum, MonadError, MonadReader, MonadState, …
newtypenewtype ReaderT r (m :: Type -> Type) a
#

The reader monad transformer, which adds a read-only environment to the given monad.

The return function ignores the environment, while m >>= k passes the inherited environment to both subcomputations:

image: images/bind-ReaderT.svg

Constructors

Instances39Generic1, MonadAccum, MonadError, MonadReader, MonadState, MonadWriter, …
typetype State s = StateT s Identity
#

A state monad parameterized by the type s of the state to carry.

The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.

newtypenewtype StateT s (m :: Type -> Type) a
#

A state transformer monad parameterized by:

  • s - The state.

  • m - The inner monad.

The return function leaves the state unchanged, while >>= uses the final state of the first computation as the initial state of the second.

Constructors

Instances35MonadAccum, MonadError, MonadReader, MonadState, MonadWriter, MonadSelect, …
datadata Integer
#

Arbitrary precision integers. In contrast with fixed-size integral types such as Int, the Integer type represents the entire infinite range of integers.

Integers are stored in a kind of sign-magnitude form, hence do not expect two's complement form when using bit operations.

If the value is small (i.e., fits into an Int), the IS constructor is used. Otherwise IP and IN constructors are used to store a BigNat representing the positive or the negative value magnitude, respectively.

Invariant: IP and IN are used iff the value does not fit in IS.

Instances33Enum, Eq, Integral, Data, Num, Ord, …
  • Enum IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Eq IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Integer
  • Integral IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Data IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Num
  • Ord IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Integer
  • Read IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Show IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Ix IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Ix
  • Bits IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • PrintfArg IntegerDefined in base-4.22.0.0 · Text.Printf
  • NFData IntegerDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Pretty IntegerDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Pretty IntegerDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Binary IntegerDefined in binary-0.8.9.3 · Data.Binary.Class
  • DayPeriod YearDefined in time-1.15 · Data.Time.Calendar.Gregorian · orphan
  • ShowPadded IntegerDefined in time-1.15 · Data.Time.Calendar.Private
  • Random IntegerDefined in random-1.3.1 · System.Random

    Note - random generates values in the Int range

  • UniformRange IntegerDefined in random-1.3.1 · System.Random.Internal
  • Arbitrary IntegerDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary IntegerDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function IntegerDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable IntegerDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • ShowPadded IntegerDefined in time-compat-1.9.9 · Data.Time.Calendar.Private
  • FromJSON IntegerDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON

    This instance includes a bounds check to prevent maliciously large inputs to fill up the memory of the target system. You can newtype Scientific and provide your own instance using withScientific if you want to allow larger inputs.

  • FromJSONKey IntegerDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON IntegerDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey IntegerDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable IntegerDefined in formatting-7.2.0 · Formatting.Buildable
  • Lift IntegerDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • ReportSchemaErrors m => FromJSON m IntegerDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • Monad m => ToJSON m IntegerDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
datadata Natural
#

Natural number

Invariant: numbers <= 0xffffffffffffffff use the NS constructor

Instances29Enum, Eq, Integral, Data, Num, Ord, …
  • Enum NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Eq NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Natural
  • Integral NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Data NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Num

    Note that Natural's Num instance isn't a ring: no element but 0 has an additive inverse. It is a semiring though.

  • Ord NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bignum.Natural
  • Read NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Real
  • Show NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Ix NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Ix
  • Bits NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • PrintfArg NaturalDefined in base-4.22.0.0 · Text.Printf
  • NFData NaturalDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Binary NaturalDefined in binary-0.8.9.3 · Data.Binary.Class
  • UniformRange NaturalDefined in random-1.3.1 · System.Random.Internal
  • Arbitrary NaturalDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary NaturalDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function NaturalDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable NaturalDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • FromJSON NaturalDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey NaturalDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON NaturalDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey NaturalDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Lift NaturalDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • TestCoercion SNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • TestEquality SNatDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeNats
  • MonadError SchemaError m => FromJSON m NaturalDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • Monad m => ToJSON m NaturalDefined in cardano-prelude-0.2.2.0 · Cardano.Prelude.Json.Canonical · orphan
  • type Compare a b = CmpNat a bDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Ord
datadata Maybe a
#

The Maybe type encapsulates an optional value. A value of type Maybe a either contains a value of type a (represented as Just a), or it is empty (represented as Nothing). 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.

Constructors

Instances76Monad, Functor, MonadFix, MonadFail, Applicative, Foldable, …
datadata Bool
#
Instances45Bounded, Enum, Eq, Data, Ord, Read, …
  • Bounded BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Enum BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Enum
  • Eq BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Data BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Ord BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes
  • Read BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Show BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Show
  • Ix BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Ix
  • Generic BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Bits BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits

    Interpret Bool as 1-bit bit-field

  • FiniteBits BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Bits
  • Storable BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • SingKind BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • NFData BoolDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Pretty BoolDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Pretty BoolDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Binary BoolDefined in binary-0.8.9.3 · Data.Binary.Class
  • Random BoolDefined in random-1.3.1 · System.Random
  • Finite BoolDefined in random-1.3.1 · System.Random.GFinite
  • Uniform BoolDefined in random-1.3.1 · System.Random.Internal
  • UniformRange BoolDefined in random-1.3.1 · System.Random.Internal
  • Arbitrary BoolDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary BoolDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function BoolDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Testable BoolDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Property
  • Hashable BoolDefined in hashable-1.5.1.0 · Data.Hashable.Class
  • Unbox BoolDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON BoolDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey BoolDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON BoolDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey BoolDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable BoolDefined in formatting-7.2.0 · Formatting.Buildable
  • Lift BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • SingI 'FalseDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • SingI 'TrueDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • IArray UArray BoolDefined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector BoolDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector BoolDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • MArray IOUArray Bool IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • MArray (STUArray s) Bool (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • type Rep Bool = D1 ('MetaData "Bool" "GHC.Internal.Types" "ghc-internal" 'False) (C1 ('MetaCons "False" 'PrefixI 'False) U1 :+: C1 ('MetaCons "True" 'PrefixI 'False) U1)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type DemoteRep Bool = BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data Sing
    • STrue :: R:SingBoola 'True
    • SFalse :: R:SingBoola 'False
    Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data MVector s BoolDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector BoolDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
datadata Char
#

The character type Char represents Unicode codespace and its elements are code points as in definitions D9 and D10 of the Unicode Standard.

Character literals in Haskell are single-quoted: 'Q', 'Я' or 'Ω'. To represent a single quote itself use '\'', and to represent a backslash use '\\'. The full grammar can be found in the section 2.6 of the Haskell 2010 Language Report.

To specify a character by its code point one can use decimal, hexadecimal or octal notation: '\65', '\x41' and '\o101' are all alternative forms of 'A'. The largest code point is '\x10ffff'.

There is a special escape syntax for ASCII control characters:

Escape

Alternatives

Meaning

'\NUL'

'\0'

null character

'\SOH'

'\1'

start of heading

'\STX'

'\2'

start of text

'\ETX'

'\3'

end of text

'\EOT'

'\4'

end of transmission

'\ENQ'

'\5'

enquiry

'\ACK'

'\6'

acknowledge

'\BEL'

'\7'

,

'\a'

bell (alert)

'\BS'

'\8'

,

'\b'

backspace

'\HT'

'\9'

,

'\t'

horizontal tab

'\LF'

'\10'

,

'\n'

line feed (new line)

'\VT'

'\11'

,

'\v'

vertical tab

'\FF'

'\12'

,

'\f'

form feed

'\CR'

'\13'

,

'\r'

carriage return

'\SO'

'\14'

shift out

'\SI'

'\15'

shift in

'\DLE'

'\16'

data link escape

'\DC1'

'\17'

device control 1

'\DC2'

'\18'

device control 2

'\DC3'

'\19'

device control 3

'\DC4'

'\20'

device control 4

'\NAK'

'\21'

negative acknowledge

'\SYN'

'\22'

synchronous idle

'\ETB'

'\23'

end of transmission block

'\CAN'

'\24'

cancel

'\EM'

'\25'

end of medium

'\SUB'

'\26'

substitute

'\ESC'

'\27'

escape

'\FS'

'\28'

file separator

'\GS'

'\29'

group separator

'\RS'

'\30'

record separator

'\US'

'\31'

unit separator

'\SP'

'\32'

,

' '

space

'\DEL'

'\127'

delete

Data.Char provides utilities to work with Char.

Instances59Bounded, Enum, Data, Read, Ix, Storable, …
datadata Double
#

Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type.

Instances55Enum, Floating, Fractional, Data, Num, Read, …
  • Enum DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    fromEnum just truncates its argument, beware of all sorts of overflows.

    List generators have extremely peculiar behavior, mandated by Haskell Report 2010:

    Example1 expression
    [0..1.5][0.0,1.0,2.0]
  • Eq DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    Note that due to the presence of NaN, Double's Eq instance does not satisfy reflexivity.

    Example1 expression
    0/0 == (0/0 :: Double)False

    Also note that Double's Eq instance does not satisfy substitutivity:

    Example2 expressions
    0 == (-0 :: Double)Truerecip 0 == recip (-0 :: Double)False
  • Floating DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float
  • Fractional DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero.

    Example4 expressions
    0 == (-0 :: Double)Truerecip 0 == recip (-0 :: Double)Falsemap (/ 0) [-1, 0, 1][-Infinity,NaN,Infinity]map (* 0) $ map (/ 0) [-1, 0, 1][NaN,NaN,NaN]
  • Data DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero. Neither addition nor multiplication are associative or distributive:

    Example3 expressions
    (0.1 + 0.1) + 0.4 == 0.1 + (0.1 + 0.4)False(0.1 + 0.2) * 0.3 == 0.1 * 0.3 + 0.2 * 0.3False(0.1 * 0.1) * 0.3 == 0.1 * (0.1 * 0.3)False
  • Ord DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    IEEE 754 Double-precision type includes not only numbers, but also positive and negative infinities and a special element called NaN (which can be quiet or signal).

    IEEE 754-2008, section 5.11 requires that if at least one of arguments of <=, <, >, >= is NaN then the result of the comparison is False, and instance Ord Double complies with this requirement. This violates the reflexivity: both NaN <= NaN and NaN >= NaN are False.

    IEEE 754-2008, section 5.10 defines totalOrder predicate. Unfortunately, compare on Doubles violates the IEEE standard and does not define a total order. More specifically, both compare NaN x and compare x NaN always return GT.

    Thus, users must be extremely cautious when using instance Ord Double. For instance, one should avoid ordered containers with keys represented by Double, because data loss and corruption may happen. An IEEE-compliant compare is available in fp-ieee package as TotallyOrdered newtype.

    Moving further, the behaviour of min and max with regards to NaN is also non-compliant. IEEE 754-2008, section 5.3.1 defines that quiet NaN should be treated as a missing data by minNum and maxNum functions, for example, minNum(NaN, 1) = minNum(1, NaN) = 1. Some languages such as Java deviate from the standard implementing minNum(NaN, 1) = minNum(1, NaN) = NaN. However, min / max in base are even worse: min NaN 1 is 1, but min 1 NaN is NaN.

    IEEE 754-2008 compliant min / max can be found in ieee754 package under minNum / maxNum names. Implementations compliant with minimumNumber / maximumNumber from a newer IEEE 754-2019, section 9.6 are available from fp-ieee package.

  • Read DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that toRational generates garbage for non-finite arguments:

    Example2 expressions
    toRational (1/0)179769313 (and 300 more digits...) % 1toRational (0/0)269653970 (and 300 more digits...) % 1
  • RealFloat DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float
  • RealFrac DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that results for non-finite arguments are garbage:

    Example2 expressions
    [ f x | f <- [round, floor, ceiling], x <- [-1/0, 0/0, 1/0] ] :: [Int][0,0,0,0,0,0,0,0,0]map properFraction [-1/0, 0/0, 1/0] :: [(Int, Double)][(0,0.0),(0,0.0),(0,0.0)]

    and get even more non-sensical if you ask for Integer instead of Int.

  • Show DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan
  • Storable DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg DoubleDefined in base-4.22.0.0 · Text.Printf
  • NFData DoubleDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Pretty DoubleDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Pretty DoubleDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Binary DoubleDefined in binary-0.8.9.3 · Data.Binary.Class

    Uses non-IEEE754 encoding. Does not round-trip NaN.

  • Random DoubleDefined in random-1.3.1 · System.Random

    Note - random produces values in the closed range [0,1].

  • UniformRange DoubleDefined in random-1.3.1 · System.Random.Internal
  • Arbitrary DoubleDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary DoubleDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function DoubleDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable DoubleDefined in hashable-1.5.1.0 · Data.Hashable.Class

    Note: prior to hashable-1.3.0.0, hash 0.0 /= hash (-0.0)

    The hash of NaN is not well defined.

  • Prim DoubleDefined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox DoubleDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON DoubleDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey DoubleDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON DoubleDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey DoubleDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable DoubleDefined in formatting-7.2.0 · Formatting.Buildable
  • Lift DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray DoubleDefined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector DoubleDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector DoubleDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Convertable Double BuilderDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Double ByteStringDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Double TextDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Double BuilderDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • MArray IOUArray Double IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • Generic1 (URec Double)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable UDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable UDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • MArray (STUArray s) Double (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • Functor (URec Double)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Double p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep (URec Double p) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UDouble" 'PrefixI 'True) (S1 ('MetaSel ('Just "uDouble#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) UDouble))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 (URec Double) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UDouble" 'PrefixI 'True) (S1 ('MetaSel ('Just "uDouble#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) UDouble))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data URec DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics

    Used for marking occurrences of Double#

  • data MVector s DoubleDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector DoubleDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type ForeignFloating Double = CDoubleDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Internal.FFI
datadata Float
#

Single-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type.

Instances55Enum, Floating, Fractional, Data, Num, Read, …
  • Enum FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    fromEnum just truncates its argument, beware of all sorts of overflows.

    List generators have extremely peculiar behavior, mandated by Haskell Report 2010:

    Example1 expression
    [0..1.5 :: Float][0.0,1.0,2.0]
  • Eq FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    Note that due to the presence of NaN, Float's Eq instance does not satisfy reflexivity.

    Example1 expression
    0/0 == (0/0 :: Float)False

    Also note that Float's Eq instance does not satisfy extensionality:

    Example2 expressions
    0 == (-0 :: Float)Truerecip 0 == recip (-0 :: Float)False
  • Floating FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float
  • Fractional FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero.

    Example4 expressions
    0 == (-0 :: Float)Truerecip 0 == recip (-0 :: Float)Falsemap (/ 0) [-1, 0, 1 :: Float][-Infinity,NaN,Infinity]map (* 0) $ map (/ 0) [-1, 0, 1 :: Float][NaN,NaN,NaN]
  • Data FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Data
  • Num FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    This instance implements IEEE 754 standard with all its usual pitfalls about NaN, infinities and negative zero. Neither addition nor multiplication are associative or distributive:

    Example3 expressions
    (0.1 + 0.1 :: Float) + 0.5 == 0.1 + (0.1 + 0.5)False(0.1 + 0.2 :: Float) * 0.9 == 0.1 * 0.9 + 0.2 * 0.9False(0.1 * 0.1 :: Float) * 0.9 == 0.1 * (0.1 * 0.9)False
  • Ord FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Classes

    See instance Ord Double for discussion of deviations from IEEE 754 standard.

  • Read FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Read
  • Real FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that toRational generates garbage for non-finite arguments:

    Example2 expressions
    toRational (1/0 :: Float)340282366920938463463374607431768211456 % 1toRational (0/0 :: Float)510423550381407695195061911147652317184 % 1
  • RealFloat FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float
  • RealFrac FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan

    Beware that results for non-finite arguments are garbage:

    Example2 expressions
    [ f x | f <- [round, floor, ceiling], x <- [-1/0, 0/0, 1/0 :: Float] ] :: [Int][0,0,0,0,0,0,0,0,0]map properFraction [-1/0, 0/0, 1/0] :: [(Int, Float)][(0,0.0),(0,0.0),(0,0.0)]

    and get even more non-sensical if you ask for Integer instead of Int.

  • Show FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Float · orphan
  • Storable FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.Storable
  • PrintfArg FloatDefined in base-4.22.0.0 · Text.Printf
  • NFData FloatDefined in deepseq-1.5.1.0 · Control.DeepSeq
  • Pretty FloatDefined in pretty-1.1.3.6 · Text.PrettyPrint.Annotated.HughesPJClass
  • Pretty FloatDefined in pretty-1.1.3.6 · Text.PrettyPrint.HughesPJClass
  • Binary FloatDefined in binary-0.8.9.3 · Data.Binary.Class

    Uses non-IEEE754 encoding. Does not round-trip NaN.

  • Random FloatDefined in random-1.3.1 · System.Random

    Note - random produces values in the closed range [0,1].

  • UniformRange FloatDefined in random-1.3.1 · System.Random.Internal
  • Arbitrary FloatDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • CoArbitrary FloatDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Arbitrary
  • Function FloatDefined in QuickCheck-2.18.0.0 · Test.QuickCheck.Function
  • Hashable FloatDefined in hashable-1.5.1.0 · Data.Hashable.Class

    Note: prior to hashable-1.3.0.0, hash 0.0 /= hash (-0.0)

    The hash of NaN is not well defined.

  • Prim FloatDefined in primitive-0.9.1.0 · Data.Primitive.Types
  • Unbox FloatDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • FromJSON FloatDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • FromJSONKey FloatDefined in aeson-2.2.5.1 · Data.Aeson.Types.FromJSON
  • ToJSON FloatDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • ToJSONKey FloatDefined in aeson-2.2.5.1 · Data.Aeson.Types.ToJSON
  • Buildable FloatDefined in formatting-7.2.0 · Formatting.Buildable
  • Lift FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.TH.Lift
  • IArray UArray FloatDefined in array-0.5.8.0 · Data.Array.Base
  • MVector MVector FloatDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Vector Vector FloatDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • Convertable Float BuilderDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Float ByteStringDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Float TextDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • Convertable Float BuilderDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Convertable
  • MArray IOUArray Float IODefined in array-0.5.8.0 · Data.Array.IO.Internals
  • Generic1 (URec Float)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Foldable UFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Foldable
  • Traversable UFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Traversable
  • MArray (STUArray s) Float (ST s)Defined in array-0.5.8.0 · Data.Array.Base
  • Functor (URec Float)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Eq (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Ord (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Show (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • Generic (URec Float p)Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep (URec Float p) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UFloat" 'PrefixI 'True) (S1 ('MetaSel ('Just "uFloat#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) UFloat))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • type Rep1 (URec Float) = D1 ('MetaData "URec" "GHC.Internal.Generics" "ghc-internal" 'False) (C1 ('MetaCons "UFloat" 'PrefixI 'True) (S1 ('MetaSel ('Just "uFloat#") 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) UFloat))Defined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data URec FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics

    Used for marking occurrences of Float#

  • data MVector s FloatDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • data Vector FloatDefined in vector-0.13.2.0 · Data.Vector.Unboxed.Base
  • type ForeignFloating Float = CFloatDefined in double-conversion-2.0.5.0 · Data.Double.Conversion.Internal.FFI
datadata Int
#

A fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class.

Instances104Bounded, Enum, Integral, Data, Num, Read, …
datadata Symbol
#

(Kind) This is the kind of type-level symbols.

Instances8SingKind, TestCoercion, TestEquality, SingI, IsRecord, Compare, …
  • SingKind SymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • TestCoercion SSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • TestEquality SSymbolDefined in ghc-internal-9.1401.0 · GHC.Internal.TypeLits
  • KnownSymbol a => SingI aDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • IsRecord (M1 S ('MetaSel 'Nothing u ss ds) f) FalseDefined in aeson-2.2.5.1 · Data.Aeson.Types.Generic
  • type Compare a b = CmpSymbol a bDefined in ghc-internal-9.1401.0 · GHC.Internal.Data.Type.Ord
  • type DemoteRep Symbol = StringDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
  • data SingDefined in ghc-internal-9.1401.0 · GHC.Internal.Generics
typetype Type = TYPE LiftedRep
#

The kind of types with lifted values. For example Int :: Type.

datadata Word
#

A Word is an unsigned integral type, with the same size as Int.

Instances51Bounded, Enum, Integral, Data, Num, Read, …
classclass a ~ b => (~) (a :: k) (b :: k)
#

Lifted, homogeneous equality. By lifted, we mean that it can be bogus (deferred type error). By homogeneous, the two types a and b must have the same kinds.