From d7e3b2a3bdda90bfe09e91c2fc54d7280e9ceabf Mon Sep 17 00:00:00 2001 From: Ivaylo Ivanov Date: Thu, 11 Nov 2021 16:02:30 +0100 Subject: [PATCH] Add initial UE4 A.4 --- code/Angabe4.lhs | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) 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