Haskell
Number System



                Jaiyalas
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
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
Type : Integer
Show
       Num   Fractional   Floating
 Eq                                  RealFloat
             Real         RealFrac
Ord
                    Integral
Enum
Type : Int
Show
       Num    Fractional   Floating
 Eq                                     RealFloat
              Real         RealFrac
Ord
                     Integral         Bounded
Enum
Type : Rational
Show
       Num   Fractional   Floating
 Eq                                  RealFloat
             Real         RealFrac
Ord
                    Integral
Enum
Type : Complex
Show
       Num   Fractional   Floating
 Eq                                  RealFloat
             Real         RealFrac
Ord
                    Integral
Enum
Type : Float & Double
Show
       Num   Fractional   Floating
 Eq                                  RealFloat
             Real         RealFrac
Ord
                    Integral
Enum
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
Using Number
Focus on properties Class provided




Focus on a particular type
Using Number
Focus on properties Class provided
func :: (Fractional α) => α -> α




Focus on a particular type
func :: Double -> Double
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
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
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
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
THX.

Number System in Haskell

  • 1.
  • 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
  • 10.
    Using Number Focus onproperties Class provided Focus on a particular type
  • 11.
    Using Number Focus onproperties Class provided func :: (Fractional α) => α -> α Focus on a particular type func :: Double -> Double
  • 12.
    Using Number Focus onproperties 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 onwhat 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 onwhat 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 onwhat 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
  • 16.