module Money where

import Decimal.ReadP
import Decimal.Print
import Decimal.Operations
import Decimal.Representation

data Money currency = Money Decimal

data Dollar = Dollar
data Yen = Yen

instance Show Dollar where
    show Dollar = "$"

instance Show (Money c) where
    show (Money amt) = (showScientific amt)
{-
instance Show (Money c) where
    show (Money amt) = ("unknown curreny"++ (showScientific amt))
-}
dollars :: String -> Money Dollar
dollars str = Money (read str)

instance Eq (Money c) where
    (Money a) == (Money b) = a == b

instance Num (Money c) where
    (Money a) * (Money b) = Money (a * b)
    fromInteger i = Money (fromInteger i)

instance Fractional (Money c) where
    fromRational r = Money (fromRational r)

double :: Money c -> Money c
double m = m * 2.00