module Piggybank where

{- zu implementierende Funktionen:
emptyPig :: PiggyBank                       -- leeres Sparschwein
add      :: Coin -> PiggyBank -> PiggyBank  -- Einwerfen einer Muenze
shake    :: PiggyBank -> (PiggyBank, Coin)  -- Herausschütteln einer Muenze
isEmpty  :: PiggyBank -> Bool               -- Test auf leeres Sparschwein
break    :: PiggyBank -> Money              -- Aufbrechen des Sparschweins

-- zu erfuellende Gleichungen:
shake (add x emptyPig) = (emptyPig, x)
break p + break (add x emptyPig) = break (add x p)
-}

data Coin  = OneCent | TwoCents | FiveCents | TenCents | FiftyCents
           | OneEuro | TwoEuros deriving Show
type Money = Int -- Geldwert in Cents



-- Variante I: Sparschwein als 7-Tupel
type PiggyBank1 = (Int, Int, Int, Int, Int, Int, Int) 



--  Variante II: Sparschwein als Liste
type PiggyBank2 = [Coin]