module QuantLib.Money
( module QuantLib.Money
) where
import QuantLib.Currency
import QuantLib.Currencies.Europe (eur)
data Money = Money {
mValue :: Double,
mCurrency :: Currency
} deriving (Eq)
instance Show Money where
showsPrec _ (Money v c) s = show v++" "++show c++s
instance Num Money where
(+) (Money v0 c0) (Money v1 c1)
| c0 == c1 = Money (v0+v1) c0
| otherwise = error "Currency conversion is not implemented"
(*) _ _ = error "Multiplying moneys has no sense"
() (Money v0 c0) (Money v1 c1)
| c0 == c1 = Money (v0v1) c0
| otherwise = error "Currency conversion is not implemented"
negate (Money v c) = Money (v) c
abs (Money v c) = Money (abs v) c
signum (Money v c) = Money (signum v) c
fromInteger i = Money (fromInteger i) eur