From 90edf3d2421d81f5215be7465f6dadd34e90b2aa Mon Sep 17 00:00:00 2001 From: Ivaylo Ivanov Date: Mon, 8 Nov 2021 15:48:13 +0100 Subject: [PATCH] Add initial helper functions --- code/Angabe4.lhs | 93 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 70 insertions(+), 23 deletions(-) diff --git a/code/Angabe4.lhs b/code/Angabe4.lhs index ff332dc..687aaba 100644 --- a/code/Angabe4.lhs +++ b/code/Angabe4.lhs @@ -1,9 +1,9 @@ > module Angabe4 where 1. Vervollstaendigen Sie gemaess Angabentext! -2. Vervollständigen Sie auch die vorgegebenen Kommentaranfänge! +2. Vervollst�ndigen Sie auch die vorgegebenen Kommentaranf�nge! 3. Loeschen Sie keine Deklarationen aus diesem Rahmenprogramm, auch nicht die Modulanweisug! -4. Achten Sie darauf, dass `Gruppe' Leserechte fuer Ihre Abgabedatei hat! +4. Achten Sie darauf, dass `Gruppe' Leserechte fuer Ihre Abgabedatei hat! Datenstrukturen fuer eine einfache Buchhaltung: @@ -14,60 +14,108 @@ Datenstrukturen fuer eine einfache Buchhaltung: > } deriving (Eq,Ord,Show) > type Brutto = Cent > type Netto = Cent -> data Skonto = KeinSkonto | DreiProzent +> data Skonto = KeinSkonto | DreiProzent > | FuenfProzent | ZehnProzent deriving (Eq,Ord,Show) > data Tag = I | II | III | IV | V | VI | VII | VIII | IX | X -> | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII +> | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII > | XIX | XX | XXI | XXII | XXIII | XXIV | XXV -> | XXVI | XXVII | XXVIII | XXIX | XXX +> | XXVI | XXVII | XXVIII | XXIX | XXX > | XXXI deriving (Eq,Ord,Show) > data Monat = Jan | Feb | Mar | Apr | Mai | Jun | Jul | Aug > | Sep | Okt | Nov | Dez deriving (Eq,Ord,Show) > type Jahr = Nat1 > data Datum = D { tag :: Tag, > monat :: Monat, -> jahr :: Jahr +> jahr :: Jahr > } deriving (Eq,Show) -> newtype Geschaeftspartner = GP { partner :: Name, -> seit :: Datum -> } deriving (Eq,Show) +> data Geschaeftspartner = GP { partner :: Name, +> seit :: Datum +> } deriving (Eq,Show) > data Geschaeftsvorfall = Zahlung { brutto :: Brutto, > skonto :: Skonto, > zahlung_vom :: Datum > } -> | Gutschrift { gutschrift :: Cent, +> | Gutschrift { gutschriftsbetrag :: Cent, > gutschrift_vom :: Datum -> } +> } > deriving (Eq,Show) > type Kassabucheintrag = (Geschaeftspartner,Geschaeftsvorfall) > newtype Kassabuch = KB [Kassabucheintrag] deriving (Eq,Show) +Helper functions: + +> day_to_str :: Tag -> String +> day_to_str I = "01" +> day_to_str II = "02" +> day_to_str III = "03" +> day_to_str IV = "04" +> day_to_str V = "05" +> day_to_str VI = "06" +> day_to_str VII = "07" +> day_to_str VIII = "08" +> day_to_str IX = "09" +> day_to_str X = "10" +> day_to_str XI = "11" +> day_to_str XII = "12" +> day_to_str XIII = "13" +> day_to_str XIV = "14" +> day_to_str XV = "15" +> day_to_str XVI = "16" +> day_to_str XVII = "17" +> day_to_str XVIII = "18" +> day_to_str XIX = "19" +> day_to_str XX = "20" +> day_to_str XXI = "21" +> day_to_str XXII = "22" +> day_to_str XXIII = "23" +> day_to_str XXIV = "24" +> day_to_str XXV = "25" +> day_to_str XXVI = "26" +> day_to_str XXVII = "27" +> day_to_str XXVIII = "28" +> day_to_str XXIX = "29" +> day_to_str XXX = "30" +> day_to_str XXXI = "31" + +> month_to_str :: Monat -> String +> month_to_str Jan = "01" +> month_to_str Feb = "02" +> month_to_str Mar = "03" +> month_to_str Apr = "04" +> month_to_str Mai = "05" +> month_to_str Jun = "06" +> month_to_str Jul = "07" +> month_to_str Aug = "08" +> month_to_str Sep = "09" +> month_to_str Okt = "10" +> month_to_str Nov = "11" +> month_to_str Dez = "12" Aufgabe A.1 > type P_Geschaeftspartner = Geschaeftspartner -> data AP_Geschaeftsvorfall +> data AP_Geschaeftsvorfall > = AP_Zahlung { netto :: Netto, > zahlungsdatum :: Datum > } > | P_Gutschrift { gutschrift :: Cent, > gutschriftsdatum :: Datum -> } deriving (Eq,Show) +> } deriving (Eq,Show) > type AP_Kassabucheintrag = (P_Geschaeftspartner,AP_Geschaeftsvorfall) > waup :: Kassabucheintrag -> AP_Kassabucheintrag -Knapp, aber gut nachvollziehbar geht waup folgendermassen vor: +Knapp, aber gut nachvollziehbar geht waup folgendermassen vor: ... Aufgabe A.2 > data EuroCent = EC { euro :: Nat1, -> cent :: Nat1 +> cent :: Nat1 - Nur Werte zwischen 0 und 99 für cent! + Nur Werte zwischen 0 und 99 fuer cent! > } deriving (Eq,Ord,Show) @@ -75,12 +123,12 @@ Aufgabe A.2 > zahlungsdatum' :: Datum > } > | K_Gutschrift { ec_gutschrift :: EuroCent, -> gutschriftsdatum' :: Datum -> } deriving (Eq,Show) +> gutschriftsdatum' :: Datum +> } deriving (Eq,Show) > newtype KonsolidiertesKassabuch > = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)] -> deriving (Eq,Show) +> deriving (Eq,Show) > konsolidiere :: Kassabuch -> KonsolidiertesKassabuch @@ -94,10 +142,10 @@ Aufgabe A.3 > | Zahlungssaldo { zs :: EuroCent } > | Ausgeglichen > | Keine_Geschaeftsbeziehung deriving (Eq,Show) - + > saldo :: P_Geschaeftspartner -> KonsolidiertesKassabuch -> Saldo -Knapp, aber gut nachvollziehbar geht saldo folgendermassen vor: +Knapp, aber gut nachvollziehbar geht saldo folgendermassen vor: ... @@ -107,6 +155,5 @@ Aufgabe A.4 > saldiere :: Kassabuch -> SaldiertesKassabuch -Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor: +Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor: ... -