GHC.Real

Copyright (c) The University of Glasgow 1994-2002 see libraries/base/LICENSE [email protected] internal non-portable (GHC Extensions) Trustworthy Haskell2010

Description

The types `Ratio` and `Rational`, and the classes `Real`, `Fractional`, `Integral`, and `RealFrac`.

data Ratio a Source

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 `Natural`'s.

Constructors

 !a :% !a
Instances
Instances details
Integral a => Enum (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

succ :: Ratio a -> Ratio a Source

pred :: Ratio a -> Ratio a Source

toEnum :: Int -> Ratio a Source

fromEnum :: Ratio a -> Int Source

enumFrom :: Ratio a -> [Ratio a] Source

enumFromThen :: Ratio a -> Ratio a -> [Ratio a] Source

enumFromTo :: Ratio a -> Ratio a -> [Ratio a] Source

enumFromThenTo :: Ratio a -> Ratio a -> Ratio a -> [Ratio a] Source

Eq a => Eq (Ratio a)

Since: base-2.1

Instance details

Defined in GHC.Real

Methods

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

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

Integral a => Fractional (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

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

recip :: Ratio a -> Ratio a Source

(Data a, Integral a) => Data (Ratio a)

Since: base-4.0.0.0

Instance details

Defined in Data.Data

Methods

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

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

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

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

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

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

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

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

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

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

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

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

Integral a => Num (Ratio a)

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

Integral a => Ord (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

compare :: Ratio a -> Ratio a -> Ordering Source

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

(<=) :: Ratio a -> Ratio a -> Bool Source

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

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

max :: Ratio a -> Ratio a -> Ratio a Source

min :: Ratio a -> Ratio a -> Ratio a Source

Since: base-2.1

Instance details

Methods

Integral a => Real (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

Integral a => RealFrac (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

properFraction :: Integral b => Ratio a -> (b, Ratio a) Source

truncate :: Integral b => Ratio a -> b Source

round :: Integral b => Ratio a -> b Source

ceiling :: Integral b => Ratio a -> b Source

floor :: Integral b => Ratio a -> b Source

Show a => Show (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

showsPrec :: Int -> Ratio a -> ShowS Source

show :: Ratio a -> String Source

showList :: [Ratio a] -> ShowS Source

(Storable a, Integral a) => Storable (Ratio a)

Since: base-4.8.0.0

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Ratio a -> Int Source

alignment :: Ratio a -> Int Source

peekElemOff :: Ptr (Ratio a) -> Int -> IO (Ratio a) Source

pokeElemOff :: Ptr (Ratio a) -> Int -> Ratio a -> IO () Source

peekByteOff :: Ptr b -> Int -> IO (Ratio a) Source

pokeByteOff :: Ptr b -> Int -> Ratio a -> IO () Source

peek :: Ptr (Ratio a) -> IO (Ratio a) Source

poke :: Ptr (Ratio a) -> Ratio a -> IO () Source

Arbitrary-precision rational numbers, represented as a ratio of two `Integer` values. A rational number may be constructed using the `%` operator.

(%) :: Integral a => a -> a -> Ratio a infixl 7 Source

Forms the ratio of two integral numbers.

numerator :: Ratio a -> a Source

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

denominator :: Ratio a -> a Source

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

reduce :: Integral a => a -> a -> Ratio a Source

`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.

class (Num a, Ord a) => Real a where Source

Methods

toRational :: a -> Rational Source

the rational equivalent of its real argument with full precision

Instances
Instances details
Real Double

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

Real Float

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

Real Int

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

Real Int8

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

Real Int16

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

Real Int32

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

Real Int64

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

Real Integer

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

Real Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Methods

Real Word

Since: base-2.1

Instance details

Defined in GHC.Real

Methods

Real Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

Real Word16

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

Real Word32

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

Real Word64

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

Real IntPtr
Instance details

Defined in Foreign.Ptr

Methods

Real WordPtr
Instance details

Defined in Foreign.Ptr

Methods

Real CUIntMax
Instance details

Defined in Foreign.C.Types

Methods

Real CIntMax
Instance details

Defined in Foreign.C.Types

Methods

Real CUIntPtr
Instance details

Defined in Foreign.C.Types

Methods

Real CIntPtr
Instance details

Defined in Foreign.C.Types

Methods

Real CSUSeconds
Instance details

Defined in Foreign.C.Types

Methods

Real CUSeconds
Instance details

Defined in Foreign.C.Types

Methods

Real CTime
Instance details

Defined in Foreign.C.Types

Methods

Real CClock
Instance details

Defined in Foreign.C.Types

Methods

Real CSigAtomic
Instance details

Defined in Foreign.C.Types

Methods

Real CWchar
Instance details

Defined in Foreign.C.Types

Methods

Real CSize
Instance details

Defined in Foreign.C.Types

Methods

Real CPtrdiff
Instance details

Defined in Foreign.C.Types

Methods

Real CDouble
Instance details

Defined in Foreign.C.Types

Methods

Real CFloat
Instance details

Defined in Foreign.C.Types

Methods

Real CBool
Instance details

Defined in Foreign.C.Types

Methods

Real CULLong
Instance details

Defined in Foreign.C.Types

Methods

Real CLLong
Instance details

Defined in Foreign.C.Types

Methods

Real CULong
Instance details

Defined in Foreign.C.Types

Methods

Real CLong
Instance details

Defined in Foreign.C.Types

Methods

Real CUInt
Instance details

Defined in Foreign.C.Types

Methods

Real CInt
Instance details

Defined in Foreign.C.Types

Methods

Real CUShort
Instance details

Defined in Foreign.C.Types

Methods

Real CShort
Instance details

Defined in Foreign.C.Types

Methods

Real CUChar
Instance details

Defined in Foreign.C.Types

Methods

Real CSChar
Instance details

Defined in Foreign.C.Types

Methods

Real CChar
Instance details

Defined in Foreign.C.Types

Methods

Real Fd
Instance details

Defined in System.Posix.Types

Methods

Real CKey
Instance details

Defined in System.Posix.Types

Methods

Real CId
Instance details

Defined in System.Posix.Types

Methods

Real CFsFilCnt
Instance details

Defined in System.Posix.Types

Methods

Real CFsBlkCnt
Instance details

Defined in System.Posix.Types

Methods

Real CClockId
Instance details

Defined in System.Posix.Types

Methods

Real CBlkCnt
Instance details

Defined in System.Posix.Types

Methods

Real CBlkSize
Instance details

Defined in System.Posix.Types

Methods

Real CRLim
Instance details

Defined in System.Posix.Types

Methods

Real CTcflag
Instance details

Defined in System.Posix.Types

Methods

Real CSpeed
Instance details

Defined in System.Posix.Types

Methods

Real CCc
Instance details

Defined in System.Posix.Types

Methods

Real CUid
Instance details

Defined in System.Posix.Types

Methods

Instance details

Defined in System.Posix.Types

Methods

Real CGid
Instance details

Defined in System.Posix.Types

Methods

Real CSsize
Instance details

Defined in System.Posix.Types

Methods

Real CPid
Instance details

Defined in System.Posix.Types

Methods

Real COff
Instance details

Defined in System.Posix.Types

Methods

Real CMode
Instance details

Defined in System.Posix.Types

Methods

Real CIno
Instance details

Defined in System.Posix.Types

Methods

Real CDev
Instance details

Defined in System.Posix.Types

Methods

Integral a => Real (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

Real a => Real (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Methods

HasResolution a => Real (Fixed a)

Since: base-2.1

Instance details

Defined in Data.Fixed

Methods

Real a => Real (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

toRational :: Const a b -> Rational Source

class (Real a, Enum a) => Integral a where Source

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`.

Methods

quot :: a -> a -> a infixl 7 Source

integer division truncated toward zero

rem :: a -> a -> a infixl 7 Source

integer remainder, satisfying

`(x `quot` y)*y + (x `rem` y) == x`

div :: a -> a -> a infixl 7 Source

integer division truncated toward negative infinity

mod :: a -> a -> a infixl 7 Source

integer modulus, satisfying

`(x `div` y)*y + (x `mod` y) == x`

quotRem :: a -> a -> (a, a) Source

simultaneous `quot` and `rem`

divMod :: a -> a -> (a, a) Source

simultaneous `div` and `mod`

toInteger :: a -> Integer Source

conversion to `Integer`

Instances
Instances details
Integral Int

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

quot :: Int -> Int -> Int Source

rem :: Int -> Int -> Int Source

div :: Int -> Int -> Int Source

mod :: Int -> Int -> Int Source

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

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

Integral Int8

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

quot :: Int8 -> Int8 -> Int8 Source

rem :: Int8 -> Int8 -> Int8 Source

div :: Int8 -> Int8 -> Int8 Source

mod :: Int8 -> Int8 -> Int8 Source

quotRem :: Int8 -> Int8 -> (Int8, Int8) Source

divMod :: Int8 -> Int8 -> (Int8, Int8) Source

Integral Int16

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

rem :: Int16 -> Int16 -> Int16 Source

div :: Int16 -> Int16 -> Int16 Source

mod :: Int16 -> Int16 -> Int16 Source

quotRem :: Int16 -> Int16 -> (Int16, Int16) Source

divMod :: Int16 -> Int16 -> (Int16, Int16) Source

Integral Int32

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

rem :: Int32 -> Int32 -> Int32 Source

div :: Int32 -> Int32 -> Int32 Source

mod :: Int32 -> Int32 -> Int32 Source

quotRem :: Int32 -> Int32 -> (Int32, Int32) Source

divMod :: Int32 -> Int32 -> (Int32, Int32) Source

Integral Int64

Since: base-2.1

Instance details

Defined in GHC.Int

Methods

rem :: Int64 -> Int64 -> Int64 Source

div :: Int64 -> Int64 -> Int64 Source

mod :: Int64 -> Int64 -> Int64 Source

quotRem :: Int64 -> Int64 -> (Int64, Int64) Source

divMod :: Int64 -> Int64 -> (Int64, Int64) Source

Integral Integer

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

divMod :: Integer -> Integer -> (Integer, Integer) Source

Integral Natural

Since: base-4.8.0.0

Instance details

Defined in GHC.Real

Methods

divMod :: Natural -> Natural -> (Natural, Natural) Source

Integral Word

Since: base-2.1

Instance details

Defined in GHC.Real

Methods

quot :: Word -> Word -> Word Source

rem :: Word -> Word -> Word Source

div :: Word -> Word -> Word Source

mod :: Word -> Word -> Word Source

quotRem :: Word -> Word -> (Word, Word) Source

divMod :: Word -> Word -> (Word, Word) Source

Integral Word8

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

rem :: Word8 -> Word8 -> Word8 Source

div :: Word8 -> Word8 -> Word8 Source

mod :: Word8 -> Word8 -> Word8 Source

quotRem :: Word8 -> Word8 -> (Word8, Word8) Source

divMod :: Word8 -> Word8 -> (Word8, Word8) Source

Integral Word16

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

quotRem :: Word16 -> Word16 -> (Word16, Word16) Source

divMod :: Word16 -> Word16 -> (Word16, Word16) Source

Integral Word32

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

quotRem :: Word32 -> Word32 -> (Word32, Word32) Source

divMod :: Word32 -> Word32 -> (Word32, Word32) Source

Integral Word64

Since: base-2.1

Instance details

Defined in GHC.Word

Methods

quotRem :: Word64 -> Word64 -> (Word64, Word64) Source

divMod :: Word64 -> Word64 -> (Word64, Word64) Source

Integral IntPtr
Instance details

Defined in Foreign.Ptr

Methods

quotRem :: IntPtr -> IntPtr -> (IntPtr, IntPtr) Source

divMod :: IntPtr -> IntPtr -> (IntPtr, IntPtr) Source

Integral WordPtr
Instance details

Defined in Foreign.Ptr

Methods

divMod :: WordPtr -> WordPtr -> (WordPtr, WordPtr) Source

Integral CUIntMax
Instance details

Defined in Foreign.C.Types

Methods

Integral CIntMax
Instance details

Defined in Foreign.C.Types

Methods

divMod :: CIntMax -> CIntMax -> (CIntMax, CIntMax) Source

Integral CUIntPtr
Instance details

Defined in Foreign.C.Types

Methods

Integral CIntPtr
Instance details

Defined in Foreign.C.Types

Methods

divMod :: CIntPtr -> CIntPtr -> (CIntPtr, CIntPtr) Source

Integral CSigAtomic
Instance details

Defined in Foreign.C.Types

Methods

Integral CWchar
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CWchar -> CWchar -> (CWchar, CWchar) Source

divMod :: CWchar -> CWchar -> (CWchar, CWchar) Source

Integral CSize
Instance details

Defined in Foreign.C.Types

Methods

rem :: CSize -> CSize -> CSize Source

div :: CSize -> CSize -> CSize Source

mod :: CSize -> CSize -> CSize Source

quotRem :: CSize -> CSize -> (CSize, CSize) Source

divMod :: CSize -> CSize -> (CSize, CSize) Source

Integral CPtrdiff
Instance details

Defined in Foreign.C.Types

Methods

Integral CBool
Instance details

Defined in Foreign.C.Types

Methods

rem :: CBool -> CBool -> CBool Source

div :: CBool -> CBool -> CBool Source

mod :: CBool -> CBool -> CBool Source

quotRem :: CBool -> CBool -> (CBool, CBool) Source

divMod :: CBool -> CBool -> (CBool, CBool) Source

Integral CULLong
Instance details

Defined in Foreign.C.Types

Methods

divMod :: CULLong -> CULLong -> (CULLong, CULLong) Source

Integral CLLong
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CLLong -> CLLong -> (CLLong, CLLong) Source

divMod :: CLLong -> CLLong -> (CLLong, CLLong) Source

Integral CULong
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CULong -> CULong -> (CULong, CULong) Source

divMod :: CULong -> CULong -> (CULong, CULong) Source

Integral CLong
Instance details

Defined in Foreign.C.Types

Methods

rem :: CLong -> CLong -> CLong Source

div :: CLong -> CLong -> CLong Source

mod :: CLong -> CLong -> CLong Source

quotRem :: CLong -> CLong -> (CLong, CLong) Source

divMod :: CLong -> CLong -> (CLong, CLong) Source

Integral CUInt
Instance details

Defined in Foreign.C.Types

Methods

rem :: CUInt -> CUInt -> CUInt Source

div :: CUInt -> CUInt -> CUInt Source

mod :: CUInt -> CUInt -> CUInt Source

quotRem :: CUInt -> CUInt -> (CUInt, CUInt) Source

divMod :: CUInt -> CUInt -> (CUInt, CUInt) Source

Integral CInt
Instance details

Defined in Foreign.C.Types

Methods

quot :: CInt -> CInt -> CInt Source

rem :: CInt -> CInt -> CInt Source

div :: CInt -> CInt -> CInt Source

mod :: CInt -> CInt -> CInt Source

quotRem :: CInt -> CInt -> (CInt, CInt) Source

divMod :: CInt -> CInt -> (CInt, CInt) Source

Integral CUShort
Instance details

Defined in Foreign.C.Types

Methods

divMod :: CUShort -> CUShort -> (CUShort, CUShort) Source

Integral CShort
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CShort -> CShort -> (CShort, CShort) Source

divMod :: CShort -> CShort -> (CShort, CShort) Source

Integral CUChar
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CUChar -> CUChar -> (CUChar, CUChar) Source

divMod :: CUChar -> CUChar -> (CUChar, CUChar) Source

Integral CSChar
Instance details

Defined in Foreign.C.Types

Methods

quotRem :: CSChar -> CSChar -> (CSChar, CSChar) Source

divMod :: CSChar -> CSChar -> (CSChar, CSChar) Source

Integral CChar
Instance details

Defined in Foreign.C.Types

Methods

rem :: CChar -> CChar -> CChar Source

div :: CChar -> CChar -> CChar Source

mod :: CChar -> CChar -> CChar Source

quotRem :: CChar -> CChar -> (CChar, CChar) Source

divMod :: CChar -> CChar -> (CChar, CChar) Source

Integral Fd
Instance details

Defined in System.Posix.Types

Methods

quot :: Fd -> Fd -> Fd Source

rem :: Fd -> Fd -> Fd Source

div :: Fd -> Fd -> Fd Source

mod :: Fd -> Fd -> Fd Source

quotRem :: Fd -> Fd -> (Fd, Fd) Source

divMod :: Fd -> Fd -> (Fd, Fd) Source

Integral CKey
Instance details

Defined in System.Posix.Types

Methods

quot :: CKey -> CKey -> CKey Source

rem :: CKey -> CKey -> CKey Source

div :: CKey -> CKey -> CKey Source

mod :: CKey -> CKey -> CKey Source

quotRem :: CKey -> CKey -> (CKey, CKey) Source

divMod :: CKey -> CKey -> (CKey, CKey) Source

Integral CId
Instance details

Defined in System.Posix.Types

Methods

quot :: CId -> CId -> CId Source

rem :: CId -> CId -> CId Source

div :: CId -> CId -> CId Source

mod :: CId -> CId -> CId Source

quotRem :: CId -> CId -> (CId, CId) Source

divMod :: CId -> CId -> (CId, CId) Source

Integral CFsFilCnt
Instance details

Defined in System.Posix.Types

Methods

Integral CFsBlkCnt
Instance details

Defined in System.Posix.Types

Methods

Integral CClockId
Instance details

Defined in System.Posix.Types

Methods

Integral CBlkCnt
Instance details

Defined in System.Posix.Types

Methods

divMod :: CBlkCnt -> CBlkCnt -> (CBlkCnt, CBlkCnt) Source

Integral CBlkSize
Instance details

Defined in System.Posix.Types

Methods

Integral CRLim
Instance details

Defined in System.Posix.Types

Methods

rem :: CRLim -> CRLim -> CRLim Source

div :: CRLim -> CRLim -> CRLim Source

mod :: CRLim -> CRLim -> CRLim Source

quotRem :: CRLim -> CRLim -> (CRLim, CRLim) Source

divMod :: CRLim -> CRLim -> (CRLim, CRLim) Source

Integral CTcflag
Instance details

Defined in System.Posix.Types

Methods

divMod :: CTcflag -> CTcflag -> (CTcflag, CTcflag) Source

Integral CUid
Instance details

Defined in System.Posix.Types

Methods

quot :: CUid -> CUid -> CUid Source

rem :: CUid -> CUid -> CUid Source

div :: CUid -> CUid -> CUid Source

mod :: CUid -> CUid -> CUid Source

quotRem :: CUid -> CUid -> (CUid, CUid) Source

divMod :: CUid -> CUid -> (CUid, CUid) Source

Instance details

Defined in System.Posix.Types

Methods

Integral CGid
Instance details

Defined in System.Posix.Types

Methods

quot :: CGid -> CGid -> CGid Source

rem :: CGid -> CGid -> CGid Source

div :: CGid -> CGid -> CGid Source

mod :: CGid -> CGid -> CGid Source

quotRem :: CGid -> CGid -> (CGid, CGid) Source

divMod :: CGid -> CGid -> (CGid, CGid) Source

Integral CSsize
Instance details

Defined in System.Posix.Types

Methods

quotRem :: CSsize -> CSsize -> (CSsize, CSsize) Source

divMod :: CSsize -> CSsize -> (CSsize, CSsize) Source

Integral CPid
Instance details

Defined in System.Posix.Types

Methods

quot :: CPid -> CPid -> CPid Source

rem :: CPid -> CPid -> CPid Source

div :: CPid -> CPid -> CPid Source

mod :: CPid -> CPid -> CPid Source

quotRem :: CPid -> CPid -> (CPid, CPid) Source

divMod :: CPid -> CPid -> (CPid, CPid) Source

Integral COff
Instance details

Defined in System.Posix.Types

Methods

quot :: COff -> COff -> COff Source

rem :: COff -> COff -> COff Source

div :: COff -> COff -> COff Source

mod :: COff -> COff -> COff Source

quotRem :: COff -> COff -> (COff, COff) Source

divMod :: COff -> COff -> (COff, COff) Source

Integral CMode
Instance details

Defined in System.Posix.Types

Methods

rem :: CMode -> CMode -> CMode Source

div :: CMode -> CMode -> CMode Source

mod :: CMode -> CMode -> CMode Source

quotRem :: CMode -> CMode -> (CMode, CMode) Source

divMod :: CMode -> CMode -> (CMode, CMode) Source

Integral CIno
Instance details

Defined in System.Posix.Types

Methods

quot :: CIno -> CIno -> CIno Source

rem :: CIno -> CIno -> CIno Source

div :: CIno -> CIno -> CIno Source

mod :: CIno -> CIno -> CIno Source

quotRem :: CIno -> CIno -> (CIno, CIno) Source

divMod :: CIno -> CIno -> (CIno, CIno) Source

Integral CDev
Instance details

Defined in System.Posix.Types

Methods

quot :: CDev -> CDev -> CDev Source

rem :: CDev -> CDev -> CDev Source

div :: CDev -> CDev -> CDev Source

mod :: CDev -> CDev -> CDev Source

quotRem :: CDev -> CDev -> (CDev, CDev) Source

divMod :: CDev -> CDev -> (CDev, CDev) Source

Integral a => Integral (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Methods

quot :: Identity a -> Identity a -> Identity a Source

rem :: Identity a -> Identity a -> Identity a Source

div :: Identity a -> Identity a -> Identity a Source

mod :: Identity a -> Identity a -> Identity a Source

quotRem :: Identity a -> Identity a -> (Identity a, Identity a) Source

divMod :: Identity a -> Identity a -> (Identity a, Identity a) Source

Integral a => Integral (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

quot :: Const a b -> Const a b -> Const a b Source

rem :: Const a b -> Const a b -> Const a b Source

div :: Const a b -> Const a b -> Const a b Source

mod :: Const a b -> Const a b -> Const a b Source

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

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

toInteger :: Const a b -> Integer Source

class Num a => Fractional a where Source

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`

Note that it isn't customarily expected that a type instance of `Fractional` implement a field. However, all instances in `base` do.

Minimal complete definition

fromRational, (recip | (/))

Methods

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

Fractional division.

recip :: a -> a Source

Reciprocal fraction.

Conversion from a `Rational` (that is `Ratio Integer`). A floating literal stands for an application of `fromRational` to a value of type `Rational`, so such literals have type `(Fractional a) => a`.

Instances
Instances details
Fractional Double

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

```>>> 0/0 * (recip 0/0 :: Double)
NaN
```

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

Fractional Float

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

```>>> 0/0 * (recip 0/0 :: Float)
NaN
```

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

(/) :: Float -> Float -> Float Source

Fractional CDouble
Instance details

Defined in Foreign.C.Types

Methods

Fractional CFloat
Instance details

Defined in Foreign.C.Types

Methods

Integral a => Fractional (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

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

recip :: Ratio a -> Ratio a Source

Fractional a => Fractional (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Methods

(/) :: Identity a -> Identity a -> Identity a Source

recip :: Identity a -> Identity a Source

HasResolution a => Fractional (Fixed a)

Since: base-2.1

Instance details

Defined in Data.Fixed

Methods

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

recip :: Fixed a -> Fixed a Source

RealFloat a => Fractional (Complex a)

Since: base-2.1

Instance details

Defined in Data.Complex

Methods

(/) :: Complex a -> Complex a -> Complex a Source

recip :: Complex a -> Complex a Source

Fractional a => Fractional (Op a b)
Instance details

Defined in Data.Functor.Contravariant

Methods

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

recip :: Op a b -> Op a b Source

fromRational :: Rational -> Op a b Source

Fractional a => Fractional (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

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

recip :: Const a b -> Const a b Source

class (Real a, Fractional a) => RealFrac a where Source

Extracting components of fractions.

properFraction

Methods

properFraction :: Integral b => a -> (b, a) Source

The function `properFraction` takes a real fractional number `x` and returns a pair `(n,f)` such that `x = n+f`, and:

• `n` is an integral number with the same sign as `x`; and
• `f` is a fraction with the same type and sign as `x`, and with absolute value less than `1`.

The default definitions of the `ceiling`, `floor`, `truncate` and `round` functions are in terms of `properFraction`.

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

`truncate x` returns the integer nearest `x` between zero and `x`

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

`round x` returns the nearest integer to `x`; the even integer if `x` is equidistant between two integers

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

`ceiling x` returns the least integer not less than `x`

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

`floor x` returns the greatest integer not greater than `x`

Instances
Instances details
RealFrac Double

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

properFraction :: Integral b => Double -> (b, Double) Source

truncate :: Integral b => Double -> b Source

round :: Integral b => Double -> b Source

ceiling :: Integral b => Double -> b Source

floor :: Integral b => Double -> b Source

RealFrac Float

Since: base-2.1

Instance details

Defined in GHC.Float

Methods

properFraction :: Integral b => Float -> (b, Float) Source

truncate :: Integral b => Float -> b Source

round :: Integral b => Float -> b Source

ceiling :: Integral b => Float -> b Source

floor :: Integral b => Float -> b Source

RealFrac CDouble
Instance details

Defined in Foreign.C.Types

Methods

properFraction :: Integral b => CDouble -> (b, CDouble) Source

truncate :: Integral b => CDouble -> b Source

round :: Integral b => CDouble -> b Source

ceiling :: Integral b => CDouble -> b Source

floor :: Integral b => CDouble -> b Source

RealFrac CFloat
Instance details

Defined in Foreign.C.Types

Methods

properFraction :: Integral b => CFloat -> (b, CFloat) Source

truncate :: Integral b => CFloat -> b Source

round :: Integral b => CFloat -> b Source

ceiling :: Integral b => CFloat -> b Source

floor :: Integral b => CFloat -> b Source

Integral a => RealFrac (Ratio a)

Since: base-2.0.1

Instance details

Defined in GHC.Real

Methods

properFraction :: Integral b => Ratio a -> (b, Ratio a) Source

truncate :: Integral b => Ratio a -> b Source

round :: Integral b => Ratio a -> b Source

ceiling :: Integral b => Ratio a -> b Source

floor :: Integral b => Ratio a -> b Source

RealFrac a => RealFrac (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Methods

properFraction :: Integral b => Identity a -> (b, Identity a) Source

truncate :: Integral b => Identity a -> b Source

round :: Integral b => Identity a -> b Source

ceiling :: Integral b => Identity a -> b Source

floor :: Integral b => Identity a -> b Source

HasResolution a => RealFrac (Fixed a)

Since: base-2.1

Instance details

Defined in Data.Fixed

Methods

properFraction :: Integral b => Fixed a -> (b, Fixed a) Source

truncate :: Integral b => Fixed a -> b Source

round :: Integral b => Fixed a -> b Source

ceiling :: Integral b => Fixed a -> b Source

floor :: Integral b => Fixed a -> b Source

RealFrac a => RealFrac (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

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

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

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

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

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

numericEnumFrom :: Fractional a => a -> [a] Source

numericEnumFromThen :: Fractional a => a -> a -> [a] Source

numericEnumFromTo :: (Ord a, Fractional a) => a -> a -> [a] Source

numericEnumFromThenTo :: (Ord a, Fractional a) => a -> a -> a -> [a] Source

fromIntegral :: (Integral a, Num b) => a -> b Source

general coercion from integral types

realToFrac :: (Real a, Fractional b) => a -> b Source

general coercion to fractional types

Arguments

 :: Real a => (a -> ShowS) a function that can show unsigned values -> Int the precedence of the enclosing context -> a the value to show -> ShowS

Converts a possibly-negative `Real` value to a string.

even :: Integral a => a -> Bool Source

odd :: Integral a => a -> Bool Source

(^) :: (Num a, Integral b) => a -> b -> a infixr 8 Source

raise a number to a non-negative integral power

(^^) :: (Fractional a, Integral b) => a -> b -> a infixr 8 Source

raise a number to an integral power

(^%^) :: Integral a => Rational -> a -> Rational Source

(^^%^^) :: Integral a => Rational -> a -> Rational Source

gcd :: Integral a => a -> a -> a Source

`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.

lcm :: Integral a => a -> a -> a Source

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

gcdInt' :: Int -> Int -> Int Source

integralEnumFrom :: (Integral a, Bounded a) => a -> [a] Source

integralEnumFromThen :: (Integral a, Bounded a) => a -> a -> [a] Source

integralEnumFromTo :: Integral a => a -> a -> [a] Source

integralEnumFromThenTo :: Integral a => a -> a -> a -> [a] Source

© The University of Glasgow and others