%
-% (c) The AQUA Project, Glasgow University, 1997-98
+% (c) The AQUA Project, Glasgow University, 1997-99
%
\section[Numeric]{Numeric interface}
\begin{code}
{-# OPTIONS -fno-implicit-prelude #-}
module Numeric
- (
- fromRat,
- showSigned,
- readSigned,
- showInt,
- readInt,
- readDec, readOct, readHex,
-
- showEFloat,
- showFFloat,
- showGFloat,
- showFloat,
- readFloat,
+ ( fromRat -- :: (RealFloat a) => Rational -> a
+ , showSigned -- :: (Real a) => (a -> ShowS) -> Int -> a -> ShowS
+ , readSigned -- :: (Real a) => ReadS a -> ReadS a
+ , showInt -- :: Integral a => a -> ShowS
+ , readInt -- :: (Integral a) => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a
+
+ , readDec -- :: (Integral a) => ReadS a
+ , readOct -- :: (Integral a) => ReadS a
+ , readHex -- :: (Integral a) => ReadS a
+
+ , showEFloat -- :: (RealFloat a) => Maybe Int -> a -> ShowS
+ , showFFloat -- :: (RealFloat a) => Maybe Int -> a -> ShowS
+ , showGFloat -- :: (RealFloat a) => Maybe Int -> a -> ShowS
+ , showFloat -- :: (RealFloat a) => a -> ShowS
+ , readFloat -- :: (RealFloat a) => ReadS a
+
- floatToDigits,
- lexDigits
+ , floatToDigits -- :: (RealFloat a) => Integer -> a -> ([Int], Int)
+ , lexDigits -- :: ReadS String
+ -- Implementation checked wrt. Haskell 98 lib report, 1/99.
) where
import PrelBase
import PrelMaybe
import PrelArr
import PrelNum
+import PrelNumExtra
import PrelRead
import PrelErr ( error )
\end{code}
-%*********************************************************
-%* *
-\subsection[Numeric-signatures]{Signatures}
-%* *
-%*********************************************************
-
-Interface on offer:
-
-\begin{pseudocode}
-fromRat :: (RealFloat a) => Rational -> a
-
-showSigned :: (Real a) => (a -> ShowS) -> Int -> a -> ShowS
-readSigned :: (Real a) => ReadS a -> ReadS a
-
-showInt :: Integral a => a -> ShowS
-readInt :: (Integral a) => a -> (Char -> Bool) -> (Char -> Int) -> ReadS a
-
-readDec :: (Integral a) => ReadS a
-readOct :: (Integral a) => ReadS a
-readHex :: (Integral a) => ReadS a
-
-showEFloat :: (RealFloat a) => Maybe Int -> a -> ShowS
-showFFloat :: (RealFloat a) => Maybe Int -> a -> ShowS
-showGFloat :: (RealFloat a) => Maybe Int -> a -> ShowS
-showFloat :: (RealFloat a) => a -> ShowS
-
-readFloat :: (RealFloat a) => ReadS a
-
-floatToDigits :: (RealFloat a) => Integer -> a -> ([Int], Int)
-lexDigits :: ReadS String
-\end{pseudocode}
-
\begin{code}
showInt :: Integral a => a -> ShowS
-showInt n r
- | n < 0 = error "Numeric.showInt: can't show negative numbers"
- | otherwise = go n r
+showInt i rs
+ | i < 0 = error "Numeric.showInt: can't show negative numbers"
+ | otherwise = go i rs
where
go n r =
case quotRem n 10 of { (n', d) ->