X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=GHC%2FInt.hs;h=025ebdb497b17ca1341e8f65548692009021f607;hb=b847c4decf42a5bc503c38bcc74a8d3c5fbf35eb;hp=cd1259475ad6f9a61a014a194811502f881de579;hpb=b706340c451952adf230b5b8daecad8a1f34d714;p=ghc-base.git diff --git a/GHC/Int.hs b/GHC/Int.hs index cd12594..025ebdb 100644 --- a/GHC/Int.hs +++ b/GHC/Int.hs @@ -21,6 +21,7 @@ module GHC.Int ( import Data.Bits +import {-# SOURCE #-} GHC.Err import GHC.Base import GHC.Enum import GHC.Num @@ -38,6 +39,7 @@ import GHC.Show -- and must ensure that it holds only values from its logical range. data Int8 = I8# Int# deriving (Eq, Ord) +-- ^ 8-bit signed integer type instance CCallable Int8 instance CReturnable Int8 @@ -79,24 +81,24 @@ instance Enum Int8 where instance Integral Int8 where quot x@(I8# x#) y@(I8# y#) | y /= 0 = I8# (narrow8Int# (x# `quotInt#` y#)) - | otherwise = divZeroError "quot{Int8}" x + | otherwise = divZeroError rem x@(I8# x#) y@(I8# y#) | y /= 0 = I8# (narrow8Int# (x# `remInt#` y#)) - | otherwise = divZeroError "rem{Int8}" x + | otherwise = divZeroError div x@(I8# x#) y@(I8# y#) | y /= 0 = I8# (narrow8Int# (x# `divInt#` y#)) - | otherwise = divZeroError "div{Int8}" x + | otherwise = divZeroError mod x@(I8# x#) y@(I8# y#) | y /= 0 = I8# (narrow8Int# (x# `modInt#` y#)) - | otherwise = divZeroError "mod{Int8}" x + | otherwise = divZeroError quotRem x@(I8# x#) y@(I8# y#) | y /= 0 = (I8# (narrow8Int# (x# `quotInt#` y#)), I8# (narrow8Int# (x# `remInt#` y#))) - | otherwise = divZeroError "quotRem{Int8}" x + | otherwise = divZeroError divMod x@(I8# x#) y@(I8# y#) | y /= 0 = (I8# (narrow8Int# (x# `divInt#` y#)), I8# (narrow8Int# (x# `modInt#` y#))) - | otherwise = divZeroError "divMod{Int8}" x + | otherwise = divZeroError toInteger (I8# x#) = S# x# instance Bounded Int8 where @@ -146,6 +148,7 @@ instance Bits Int8 where -- and must ensure that it holds only values from its logical range. data Int16 = I16# Int# deriving (Eq, Ord) +-- ^ 16-bit signed integer type instance CCallable Int16 instance CReturnable Int16 @@ -187,24 +190,24 @@ instance Enum Int16 where instance Integral Int16 where quot x@(I16# x#) y@(I16# y#) | y /= 0 = I16# (narrow16Int# (x# `quotInt#` y#)) - | otherwise = divZeroError "quot{Int16}" x + | otherwise = divZeroError rem x@(I16# x#) y@(I16# y#) | y /= 0 = I16# (narrow16Int# (x# `remInt#` y#)) - | otherwise = divZeroError "rem{Int16}" x + | otherwise = divZeroError div x@(I16# x#) y@(I16# y#) | y /= 0 = I16# (narrow16Int# (x# `divInt#` y#)) - | otherwise = divZeroError "div{Int16}" x + | otherwise = divZeroError mod x@(I16# x#) y@(I16# y#) | y /= 0 = I16# (narrow16Int# (x# `modInt#` y#)) - | otherwise = divZeroError "mod{Int16}" x + | otherwise = divZeroError quotRem x@(I16# x#) y@(I16# y#) | y /= 0 = (I16# (narrow16Int# (x# `quotInt#` y#)), I16# (narrow16Int# (x# `remInt#` y#))) - | otherwise = divZeroError "quotRem{Int16}" x + | otherwise = divZeroError divMod x@(I16# x#) y@(I16# y#) | y /= 0 = (I16# (narrow16Int# (x# `divInt#` y#)), I16# (narrow16Int# (x# `modInt#` y#))) - | otherwise = divZeroError "divMod{Int16}" x + | otherwise = divZeroError toInteger (I16# x#) = S# x# instance Bounded Int16 where @@ -255,6 +258,7 @@ instance Bits Int16 where #if WORD_SIZE_IN_BITS < 32 data Int32 = I32# Int32# +-- ^ 32-bit signed integer type instance Eq Int32 where (I32# x#) == (I32# y#) = x# `eqInt32#` y# @@ -302,22 +306,22 @@ instance Enum Int32 where instance Integral Int32 where quot x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (x# `quotInt32#` y#) - | otherwise = divZeroError "quot{Int32}" x + | otherwise = divZeroError rem x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (x# `remInt32#` y#) - | otherwise = divZeroError "rem{Int32}" x + | otherwise = divZeroError div x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (x# `divInt32#` y#) - | otherwise = divZeroError "div{Int32}" x + | otherwise = divZeroError mod x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (x# `modInt32#` y#) - | otherwise = divZeroError "mod{Int32}" x + | otherwise = divZeroError quotRem x@(I32# x#) y@(I32# y#) | y /= 0 = (I32# (x# `quotInt32#` y#), I32# (x# `remInt32#` y#)) - | otherwise = divZeroError "quotRem{Int32}" x + | otherwise = divZeroError divMod x@(I32# x#) y@(I32# y#) | y /= 0 = (I32# (x# `divInt32#` y#), I32# (x# `modInt32#` y#)) - | otherwise = divZeroError "divMod{Int32}" x + | otherwise = divZeroError toInteger x@(I32# x#) | x >= fromIntegral (minBound::Int) && x <= fromIntegral (maxBound::Int) = S# (int32ToInt# x#) @@ -406,6 +410,7 @@ foreign import "stg_shiftRL32" unsafe shiftRL32# :: Word32# -> Int# -> W #endif data Int32 = I32# Int# deriving (Eq, Ord) +-- ^ 32-bit signed integer type instance Show Int32 where showsPrec p x = showsPrec p (fromIntegral x :: Int) @@ -445,24 +450,24 @@ instance Enum Int32 where instance Integral Int32 where quot x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (narrow32Int# (x# `quotInt#` y#)) - | otherwise = divZeroError "quot{Int32}" x + | otherwise = divZeroError rem x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (narrow32Int# (x# `remInt#` y#)) - | otherwise = divZeroError "rem{Int32}" x + | otherwise = divZeroError div x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (narrow32Int# (x# `divInt#` y#)) - | otherwise = divZeroError "div{Int32}" x + | otherwise = divZeroError mod x@(I32# x#) y@(I32# y#) | y /= 0 = I32# (narrow32Int# (x# `modInt#` y#)) - | otherwise = divZeroError "mod{Int32}" x + | otherwise = divZeroError quotRem x@(I32# x#) y@(I32# y#) | y /= 0 = (I32# (narrow32Int# (x# `quotInt#` y#)), I32# (narrow32Int# (x# `remInt#` y#))) - | otherwise = divZeroError "quotRem{Int32}" x + | otherwise = divZeroError divMod x@(I32# x#) y@(I32# y#) | y /= 0 = (I32# (narrow32Int# (x# `divInt#` y#)), I32# (narrow32Int# (x# `modInt#` y#))) - | otherwise = divZeroError "divMod{Int32}" x + | otherwise = divZeroError toInteger (I32# x#) = S# x# instance Read Int32 where @@ -523,6 +528,7 @@ instance Ix Int32 where #if WORD_SIZE_IN_BITS < 64 data Int64 = I64# Int64# +-- ^ 64-bit signed integer type instance Eq Int64 where (I64# x#) == (I64# y#) = x# `eqInt64#` y# @@ -570,22 +576,22 @@ instance Enum Int64 where instance Integral Int64 where quot x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `quotInt64#` y#) - | otherwise = divZeroError "quot{Int64}" x + | otherwise = divZeroError rem x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `remInt64#` y#) - | otherwise = divZeroError "rem{Int64}" x + | otherwise = divZeroError div x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `divInt64#` y#) - | otherwise = divZeroError "div{Int64}" x + | otherwise = divZeroError mod x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `modInt64#` y#) - | otherwise = divZeroError "mod{Int64}" x + | otherwise = divZeroError quotRem x@(I64# x#) y@(I64# y#) | y /= 0 = (I64# (x# `quotInt64#` y#), I64# (x# `remInt64#` y#)) - | otherwise = divZeroError "quotRem{Int64}" x + | otherwise = divZeroError divMod x@(I64# x#) y@(I64# y#) | y /= 0 = (I64# (x# `divInt64#` y#), I64# (x# `modInt64#` y#)) - | otherwise = divZeroError "divMod{Int64}" x + | otherwise = divZeroError toInteger x@(I64# x#) | x >= fromIntegral (minBound::Int) && x <= fromIntegral (maxBound::Int) = S# (int64ToInt# x#) @@ -692,6 +698,7 @@ foreign import ccall unsafe "stg_integerToInt64" integerToInt64# :: Int# -> By -- from its logical range. data Int64 = I64# Int# deriving (Eq, Ord) +-- ^ 64-bit signed integer type instance Show Int64 where showsPrec p x = showsPrec p (fromIntegral x :: Int) @@ -724,22 +731,22 @@ instance Enum Int64 where instance Integral Int64 where quot x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `quotInt#` y#) - | otherwise = divZeroError "quot{Int64}" x + | otherwise = divZeroError rem x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `remInt#` y#) - | otherwise = divZeroError "rem{Int64}" x + | otherwise = divZeroError div x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `divInt#` y#) - | otherwise = divZeroError "div{Int64}" x + | otherwise = divZeroError mod x@(I64# x#) y@(I64# y#) | y /= 0 = I64# (x# `modInt#` y#) - | otherwise = divZeroError "mod{Int64}" x + | otherwise = divZeroError quotRem x@(I64# x#) y@(I64# y#) | y /= 0 = (I64# (x# `quotInt#` y#), I64# (x# `remInt#` y#)) - | otherwise = divZeroError "quotRem{Int64}" x + | otherwise = divZeroError divMod x@(I64# x#) y@(I64# y#) | y /= 0 = (I64# (x# `divInt#` y#), I64# (x# `modInt#` y#)) - | otherwise = divZeroError "divMod{Int64}" x + | otherwise = divZeroError toInteger (I64# x#) = S# x# instance Read Int64 where