Revised numerical prelude, version 0.02
Marcin 'Qrczak' Kowalczyk
qrczak@knm.org.pl
14 Feb 2001 21:53:16 GMT
Tue, 13 Feb 2001 18:32:21 -0500, Dylan Thurston <dpt@math.harvard.edu> pisze:
> Here's a revision of the numerical prelude.
I like it!
> > class (Real a, Floating a) => RealFrac a where
> > -- lifted directly from Haskell 98 Prelude
> > properFraction :: (Integral b) => a -> (b,a)
> > truncate, round :: (Integral b) => a -> b
> > ceiling, floor :: (Integral b) => a -> b
These should be SmallIntegral.
> For an instance of RealIntegral a, it is expected that a `quot` b
> will round towards minus infinity and a `div` b will round towards 0.
The opposite.
> > class (Real a) => SmallReal a where
> > toRational :: a -> Rational
> > class (SmallReal a, RealIntegral a) => SmallIntegral a where
> > toInteger :: a -> Integer
>
> These two classes exist to allow convenient conversions, primarily
> between the built-in types. These classes are "small" in the sense
> that they can be converted to integers (resp. rationals) without loss
> of information.
I find names of these classes unclear: Integer is not small integral,
it's big integral (as opposed to Int)! :-)
Perhaps these classes should be called Real and Integral, with
different names for current Real and Integral. But I don't have
a concrete proposal.
--
__("< Marcin Kowalczyk * qrczak@knm.org.pl http://qrczak.ids.net.pl/
\__/
^^ SYGNATURA ZASTĘPCZA
QRCZAK