+++ /dev/null
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-{-# OPTIONS -fglasgow-exts -fno-implicit-prelude #-}
-
-module PrelNum where
-
-import {-# SOURCE #-} PrelErr
-import PrelBase
-import PrelList
-import PrelEnum
-import PrelShow
-
-infixl 7 *
-infixl 6 +, -
-
-default () -- Double isn't available yet,
- -- and we shouldn't be using defaults anyway
-
-
-
-
-
-
-
-
-
-class (Eq a, Show a) => Num a where
- (+), (-), (*) :: a -> a -> a
- negate :: a -> a
- abs, signum :: a -> a
- fromInteger :: Integer -> a
- fromInt :: Int -> a -- partain: Glasgow extension
-
- x - y = x + negate y
- negate x = 0 - x
- fromInt (I# i#) = fromInteger (S# i#)
- -- Go via the standard class-op if the
- -- non-standard one ain't provided
-
-
-
-
-
-subtract :: (Num a) => a -> a -> a
-{-# INLINE subtract #-}
-subtract x y = y - x
-
-ord_0 :: Num a => a
-ord_0 = fromInt (ord '0')
-
-
-
-
-
-
-
-
-
-
-instance Num Int where
- (+) x y = plusInt x y
- (-) x y = minusInt x y
- negate x = negateInt x
- (*) x y = timesInt x y
- abs n = if n `geInt` 0 then n else (negateInt n)
-
- signum n | n `ltInt` 0 = negateInt 1
- | n `eqInt` 0 = 0
- | otherwise = 1
-
- fromInt n = n
-
-
-
-
--- These can't go in PrelBase with the defn of Int, because
--- we don't have pairs defined at that time!
-
-quotRemInt :: Int -> Int -> (Int, Int)
-a@(I# _) `quotRemInt` b@(I# _) = (a `quotInt` b, a `remInt` b)
- -- OK, so I made it a little stricter. Shoot me. (WDP 94/10)
-
-divModInt :: Int -> Int -> (Int, Int)
-divModInt x@(I# _) y@(I# _) = (x `divInt` y, x `modInt` y)
- -- Stricter. Sorry if you don't like it. (WDP 94/10)
-
-
-
-
-
-
-
-
-
-
-data Integer
- = S# Int# -- small integers
- | J# Int# ByteArray# -- large integers
-
-
-
-
-
-zeroInteger :: Integer
-zeroInteger = S# 0#
-