
Tue, 13 Feb 2001 18:32:21 -0500, Dylan Thurston
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