2. Basic Number
Type Precision Instance Data Structure
Single- Integral,
Int minBound ... -1 | 0 | 1 ... maxBound
Precision Bounded
Arbitrary-
Integer Integral ... -1 | 0 | 1 ...
Precision
Single-
Float RealFloat -
Precision
Double-
Double RealFloat -
Precision
3. More Number
Type Precision Instance Data Structure
Ratio (Integral a) => Ratio a = !a :% !a
- RealFrac
(Rational) Rational = Ratio Integer
Complex - Floating (RealFloat a) => Complex a = !a :+ !a
4. Type : Integer
Show
Num Fractional Floating
Eq RealFloat
Real RealFrac
Ord
Integral
Enum
5. Type : Int
Show
Num Fractional Floating
Eq RealFloat
Real RealFrac
Ord
Integral Bounded
Enum
6. Type : Rational
Show
Num Fractional Floating
Eq RealFloat
Real RealFrac
Ord
Integral
Enum
7. Type : Complex
Show
Num Fractional Floating
Eq RealFloat
Real RealFrac
Ord
Integral
Enum
8. Type : Float & Double
Show
Num Fractional Floating
Eq RealFloat
Real RealFrac
Ord
Integral
Enum
9. Casting Functions
fromInteger (Num a) => Integer -> a
toInteger (Integral a) => a -> Integer
fromRational (Fractional a) => Rational -> a
toRational (RealFrac a) => a -> Rational
(Integral a, Num b) => a -> b
fromIntegral
fromInteger . toInteger
fromRealFrac (RealFrac a, Fractional b) => a -> b
(realToFrac) fromRational . toRational
11. Using Number
Focus on properties Class provided
func :: (Fractional α) => α -> α
Focus on a particular type
func :: Double -> Double
12. Using Number
Focus on properties Class provided
func :: (Fractional α) => α -> α
- α can be Float, Double,
Rational or Complex
Focus on a particular type
func :: Double -> Double
- Can be Double only
13. Using Number
Focus on what Fractional can do
func :: (Fractional α) => α -> α
- α can be Float, Double,
Rational or Complex
Focus on what Double can do
func :: Double -> Double
- Can be Double only
14. Using Number
Focus on what Fractional can do
func :: (Fractional α) => α -> α
- α can be Float, Double,
Rational or Complex
Focus on what Double can do
func :: Double -> Double
- Can be Double only
15. Using Number
Focus on what Fractional can do
func :: (Fractional α) => α -> α
- α can be Float, Double,
Rational or Complex
Focus on what Double can do
func :: Double -> Double
- Can be Double only