-- file Fraction.hs

module Fraction
    (Fraction, mkFraction,
     num, denom, add, sub)
where
data Fraction = Integer :/ Integer
mkFraction _ 0 = error "undefined"
mkFraction n d = n :/ d
num (n :/ d) = n
denom (n :/ d) = d
add (n1 :/ d1) (n2 :/ d2) =
     mkFraction (n1 * d2 + n2 * d1)
                (d1 * d2)
sub (n1 :/ d1) (n2 :/ d2) =
     mkFraction (n1 * d2 - n2 * d1)
                (d1 * d2)
