Num -package:base-prelude -package:LambdaHack package:base

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 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 Rational do.
The Num class and the Integer type.
Odds and ends, mostly functions for reading and showing RealFloat-like kind of values.
Extract the numerator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.
The number of elements in the array.
the value passed to the +RTS -N flag. This is the number of Haskell threads that can run truly simultaneously at any given time, and is typically set to the number of physical processor cores on the machine. Strictly speaking it is better to use getNumCapabilities, because the number of capabilities might vary at runtime.
Returns the number of sparks currently in the local spark pool
Returns the number of sparks in the local spark pool.
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
Used in Haskell's translation of [n..] with [n..] = enumFrom n, a possible implementation being enumFrom n = n : enumFrom (succ n). For example:
  • enumFrom 4 :: [Integer] = [4,5,6,7,...]
  • enumFrom 6 :: [Int] = [6,7,8,9,...,maxBound ::
    Int]
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 For example:
  • enumFromThen 4 6 :: [Integer] = [4,6,8,10...]
  • enumFromThen 6 2 :: [Int] = [6,2,-2,-6,...,minBound ::
    Int]