content: module QuantLib.Money
          ( module QuantLib.Money
          ) where
  
  import QuantLib.Currency
  import QuantLib.Currencies.Europe (eur)
  
  -- | Amount of cash. Please, note that currency conversion is not implemented yet.
  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 (v0-v1) 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
  