diff --git a/code/Angabe4.lhs b/code/Angabe4.lhs index 7832d97..6e2dc16 100644 --- a/code/Angabe4.lhs +++ b/code/Angabe4.lhs @@ -187,6 +187,9 @@ Helper functions: > K_Gutschrift _ _ -> True > _ -> False +> ppartner_to_partner :: P_Geschaeftspartner -> Geschaeftspartner +> ppartner_to_partner p = p + =================================================================================== Aufgabe A.1 @@ -384,9 +387,18 @@ Aufgabe A.3 =================================================================================== Aufgabe A.4 -% > newtype SaldiertesKassabuch = SKB [(Geschaeftspartner,Saldo)] +> newtype SaldiertesKassabuch = SKB [(Geschaeftspartner,Saldo)] deriving (Eq,Show) -% > saldiere :: Kassabuch -> SaldiertesKassabuch +> saldiere :: Kassabuch -> SaldiertesKassabuch +> saldiere k = create_saldo_cash_book $ konsolidiere k -Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor: -... +> create_saldo_cash_book :: KonsolidiertesKassabuch -> SaldiertesKassabuch +> create_saldo_cash_book k = SKB (get_saldo_per_partner k []) + +> get_saldo_per_partner :: KonsolidiertesKassabuch -> [(Geschaeftspartner,Saldo)] -> [(Geschaeftspartner,Saldo)] +> get_saldo_per_partner (KKB(x:xs)) res +> | length x /= 0 && null xs = res ++ [(p, (saldo g (KKB([x]))))] +> | otherwise = get_saldo_per_partner (KKB(xs)) (res ++ [(p, (saldo g (KKB(x:xs))))]) +> where +> (g,v) = x +> p = ppartner_to_partner g