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

GHC.Num

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

Description

The Num class and the Integer type.

class Num a where Source

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)

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.

Minimal complete definition

(+), (*), abs, signum, fromInteger, (negate | (-))

Methods

(+) :: a -> a -> a infixl 6 Source

(-) :: a -> a -> a infixl 6 Source

(*) :: a -> a -> a infixl 7 Source

negate :: a -> a Source

Unary negation.

abs :: a -> a Source

Absolute value.

signum :: a -> a Source

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 Source

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.

Instances
Instances details
Num CBool Source
Instance details

Defined in Foreign.C.Types

Num CChar Source
Instance details

Defined in Foreign.C.Types

Num CClock Source
Instance details

Defined in Foreign.C.Types

Num CDouble Source
Instance details

Defined in Foreign.C.Types

Num CFloat Source
Instance details

Defined in Foreign.C.Types

Num CInt Source
Instance details

Defined in Foreign.C.Types

Num CIntMax Source
Instance details

Defined in Foreign.C.Types

Num CIntPtr Source
Instance details

Defined in Foreign.C.Types

Num CLLong Source
Instance details

Defined in Foreign.C.Types

Num CLong Source
Instance details

Defined in Foreign.C.Types

Num CPtrdiff Source
Instance details

Defined in Foreign.C.Types

Num CSChar Source
Instance details

Defined in Foreign.C.Types

Num CSUSeconds Source
Instance details

Defined in Foreign.C.Types

Num CShort Source
Instance details

Defined in Foreign.C.Types

Num CSigAtomic Source
Instance details

Defined in Foreign.C.Types

Num CSize Source
Instance details

Defined in Foreign.C.Types

Num CTime Source
Instance details

Defined in Foreign.C.Types

Num CUChar Source
Instance details

Defined in Foreign.C.Types

Num CUInt Source
Instance details

Defined in Foreign.C.Types

Num CUIntMax Source
Instance details

Defined in Foreign.C.Types

Num CUIntPtr Source
Instance details

Defined in Foreign.C.Types

Num CULLong Source
Instance details

Defined in Foreign.C.Types

Num CULong Source
Instance details

Defined in Foreign.C.Types

Num CUSeconds Source
Instance details

Defined in Foreign.C.Types

Num CUShort Source
Instance details

Defined in Foreign.C.Types

Num CWchar Source
Instance details

Defined in Foreign.C.Types

Num IntPtr Source
Instance details

Defined in Foreign.Ptr

Num WordPtr Source
Instance details

Defined in Foreign.Ptr

Num Int16 Source

Since: base-2.1

Instance details

Defined in GHC.Int

Num Int32 Source

Since: base-2.1

Instance details

Defined in GHC.Int

Num Int64 Source

Since: base-2.1

Instance details

Defined in GHC.Int

Num Int8 Source

Since: base-2.1

Instance details

Defined in GHC.Int

Num Word16 Source

Since: base-2.1

Instance details

Defined in GHC.Word

Num Word32 Source

Since: base-2.1

Instance details

Defined in GHC.Word

Num Word64 Source

Since: base-2.1

Instance details

Defined in GHC.Word

Num Word8 Source

Since: base-2.1

Instance details

Defined in GHC.Word

Num CBlkCnt Source
Instance details

Defined in System.Posix.Types

Num CBlkSize Source
Instance details

Defined in System.Posix.Types

Num CCc Source
Instance details

Defined in System.Posix.Types

Methods

(+) :: CCc -> CCc -> CCc Source

(-) :: CCc -> CCc -> CCc Source

(*) :: CCc -> CCc -> CCc Source

negate :: CCc -> CCc Source

abs :: CCc -> CCc Source

signum :: CCc -> CCc Source

fromInteger :: Integer -> CCc Source

Num CClockId Source
Instance details

Defined in System.Posix.Types

Num CDev Source
Instance details

Defined in System.Posix.Types

Num CFsBlkCnt Source
Instance details

Defined in System.Posix.Types

Num CFsFilCnt Source
Instance details

Defined in System.Posix.Types

Num CGid Source
Instance details

Defined in System.Posix.Types

Num CId Source
Instance details

Defined in System.Posix.Types

Methods

(+) :: CId -> CId -> CId Source

(-) :: CId -> CId -> CId Source

(*) :: CId -> CId -> CId Source

negate :: CId -> CId Source

abs :: CId -> CId Source

signum :: CId -> CId Source

fromInteger :: Integer -> CId Source

Num CIno Source
Instance details

Defined in System.Posix.Types

Num CKey Source
Instance details

Defined in System.Posix.Types

Num CMode Source
Instance details

Defined in System.Posix.Types

Num CNfds Source
Instance details

Defined in System.Posix.Types

Num CNlink Source
Instance details

Defined in System.Posix.Types

Num COff Source
Instance details

Defined in System.Posix.Types

Num CPid Source
Instance details

Defined in System.Posix.Types

Num CRLim Source
Instance details

Defined in System.Posix.Types

Num CSocklen Source
Instance details

Defined in System.Posix.Types

Num CSpeed Source
Instance details

Defined in System.Posix.Types

Num CSsize Source
Instance details

Defined in System.Posix.Types

Num CTcflag Source
Instance details

Defined in System.Posix.Types

Num CUid Source
Instance details

Defined in System.Posix.Types

Num Fd Source
Instance details

Defined in System.Posix.Types

Methods

(+) :: Fd -> Fd -> Fd Source

(-) :: Fd -> Fd -> Fd Source

(*) :: Fd -> Fd -> Fd Source

negate :: Fd -> Fd Source

abs :: Fd -> Fd Source

signum :: Fd -> Fd Source

fromInteger :: Integer -> Fd Source

Num Integer Source

Since: base-2.1

Instance details

Defined in GHC.Num

Num Natural Source

Note that Natural's Num instance isn't a ring: no element but 0 has an additive inverse. It is a semiring though.

Since: base-4.8.0.0

Instance details

Defined in GHC.Num

Num Double Source

Note that due to the presence of NaN, not all elements of Double have an additive inverse.

>>> 0/0 + (negate 0/0 :: Double)
NaN

Also note that due to the presence of -0, Double's Num instance doesn't have an additive identity

>>> 0 + (-0 :: Double)
0.0

Since: base-2.1

Instance details

Defined in GHC.Float

Num Float Source

Note that due to the presence of NaN, not all elements of Float have an additive inverse.

>>> 0/0 + (negate 0/0 :: Float)
NaN

Also note that due to the presence of -0, Float's Num instance doesn't have an additive identity

>>> 0 + (-0 :: Float)
0.0

Since: base-2.1

Instance details

Defined in GHC.Float

Num Int Source

Since: base-2.1

Instance details

Defined in GHC.Num

Methods

(+) :: Int -> Int -> Int Source

(-) :: Int -> Int -> Int Source

(*) :: Int -> Int -> Int Source

negate :: Int -> Int Source

abs :: Int -> Int Source

signum :: Int -> Int Source

fromInteger :: Integer -> Int Source

Num Word Source

Since: base-2.1

Instance details

Defined in GHC.Num

RealFloat a => Num (Complex a) Source

Since: base-2.1

Instance details

Defined in Data.Complex

Num a => Num (Identity a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Num a => Num (Down a) Source

Since: base-4.11.0.0

Instance details

Defined in Data.Ord

Methods

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

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

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

negate :: Down a -> Down a Source

abs :: Down a -> Down a Source

signum :: Down a -> Down a Source

fromInteger :: Integer -> Down a Source

Num a => Num (Max a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

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

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

negate :: Max a -> Max a Source

abs :: Max a -> Max a Source

signum :: Max a -> Max a Source

fromInteger :: Integer -> Max a Source

Num a => Num (Min a) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Semigroup

Methods

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

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

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

negate :: Min a -> Min a Source

abs :: Min a -> Min a Source

signum :: Min a -> Min a Source

fromInteger :: Integer -> Min a Source

Num a => Num (Product a) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Semigroup.Internal

Num a => Num (Sum a) Source

Since: base-4.7.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

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

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

negate :: Sum a -> Sum a Source

abs :: Sum a -> Sum a Source

signum :: Sum a -> Sum a Source

fromInteger :: Integer -> Sum a Source

Integral a => Num (Ratio a) Source

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

(+) :: Ratio a -> Ratio a -> Ratio a Source

(-) :: Ratio a -> Ratio a -> Ratio a Source

(*) :: Ratio a -> Ratio a -> Ratio a Source

negate :: Ratio a -> Ratio a Source

abs :: Ratio a -> Ratio a Source

signum :: Ratio a -> Ratio a Source

fromInteger :: Integer -> Ratio a Source

HasResolution a => Num (Fixed a) Source

Since: base-2.1

Instance details

Defined in Data.Fixed

Methods

(+) :: Fixed a -> Fixed a -> Fixed a Source

(-) :: Fixed a -> Fixed a -> Fixed a Source

(*) :: Fixed a -> Fixed a -> Fixed a Source

negate :: Fixed a -> Fixed a Source

abs :: Fixed a -> Fixed a Source

signum :: Fixed a -> Fixed a Source

fromInteger :: Integer -> Fixed a Source

Num a => Num (Op a b) Source
Instance details

Defined in Data.Functor.Contravariant

Methods

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

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

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

negate :: Op a b -> Op a b Source

abs :: Op a b -> Op a b Source

signum :: Op a b -> Op a b Source

fromInteger :: Integer -> Op a b Source

Num a => Num (Const a b) Source

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

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

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

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

negate :: Const a b -> Const a b Source

abs :: Const a b -> Const a b Source

signum :: Const a b -> Const a b Source

fromInteger :: Integer -> Const a b Source

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

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:

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

>>> Ap [] + negate (Ap [])
Ap {getAp = []}
>>> fromInteger 0 :: Ap [] Int
Ap {getAp = [0]}

Distributivity:

>>> Ap [1,2] * (3 + 4)
Ap {getAp = [7,14]}
>>> (Ap [1,2] * 3) + (Ap [1,2] * 4)
Ap {getAp = [7,11,10,14]}

Since: base-4.12.0.0

Instance details

Defined in Data.Monoid

Methods

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

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

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

negate :: Ap f a -> Ap f a Source

abs :: Ap f a -> Ap f a Source

signum :: Ap f a -> Ap f a Source

fromInteger :: Integer -> Ap f a Source

Num (f a) => Num (Alt f a) Source

Since: base-4.8.0.0

Instance details

Defined in Data.Semigroup.Internal

Methods

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

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

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

negate :: Alt f a -> Alt f a Source

abs :: Alt f a -> Alt f a Source

signum :: Alt f a -> Alt f a Source

fromInteger :: Integer -> Alt f a Source

quotRemInteger :: Integer -> Integer -> (# Integer, Integer #) Source

Deprecated: Use integerQuotRem# instead

subtract :: Num a => a -> a -> a Source

the same as flip (-).

Because - is treated specially in the Haskell grammar, (- e) is not a section, but an application of prefix negation. However, (subtract exp) is equivalent to the disallowed section.

module GHC.Num.Integer

module GHC.Num.Natural

module GHC.Natural

module GHC.Integer

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