Add initial helper functions
This commit is contained in:
parent
dfd064ba39
commit
90edf3d242
@ -1,9 +1,9 @@
|
|||||||
> module Angabe4 where
|
> module Angabe4 where
|
||||||
|
|
||||||
1. Vervollstaendigen Sie gemaess Angabentext!
|
1. Vervollstaendigen Sie gemaess Angabentext!
|
||||||
2. Vervollständigen Sie auch die vorgegebenen Kommentaranfänge!
|
2. Vervollst<EFBFBD>ndigen Sie auch die vorgegebenen Kommentaranf<6E>nge!
|
||||||
3. Loeschen Sie keine Deklarationen aus diesem Rahmenprogramm, auch nicht die Modulanweisug!
|
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:
|
Datenstrukturen fuer eine einfache Buchhaltung:
|
||||||
@ -14,60 +14,108 @@ Datenstrukturen fuer eine einfache Buchhaltung:
|
|||||||
> } deriving (Eq,Ord,Show)
|
> } deriving (Eq,Ord,Show)
|
||||||
> type Brutto = Cent
|
> type Brutto = Cent
|
||||||
> type Netto = Cent
|
> type Netto = Cent
|
||||||
> data Skonto = KeinSkonto | DreiProzent
|
> data Skonto = KeinSkonto | DreiProzent
|
||||||
> | FuenfProzent | ZehnProzent deriving (Eq,Ord,Show)
|
> | FuenfProzent | ZehnProzent deriving (Eq,Ord,Show)
|
||||||
> data Tag = I | II | III | IV | V | VI | VII | VIII | IX | X
|
> 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
|
> | XIX | XX | XXI | XXII | XXIII | XXIV | XXV
|
||||||
> | XXVI | XXVII | XXVIII | XXIX | XXX
|
> | XXVI | XXVII | XXVIII | XXIX | XXX
|
||||||
> | XXXI deriving (Eq,Ord,Show)
|
> | XXXI deriving (Eq,Ord,Show)
|
||||||
> data Monat = Jan | Feb | Mar | Apr | Mai | Jun | Jul | Aug
|
> data Monat = Jan | Feb | Mar | Apr | Mai | Jun | Jul | Aug
|
||||||
> | Sep | Okt | Nov | Dez deriving (Eq,Ord,Show)
|
> | Sep | Okt | Nov | Dez deriving (Eq,Ord,Show)
|
||||||
> type Jahr = Nat1
|
> type Jahr = Nat1
|
||||||
> data Datum = D { tag :: Tag,
|
> data Datum = D { tag :: Tag,
|
||||||
> monat :: Monat,
|
> monat :: Monat,
|
||||||
> jahr :: Jahr
|
> jahr :: Jahr
|
||||||
> } deriving (Eq,Show)
|
> } deriving (Eq,Show)
|
||||||
|
|
||||||
> newtype Geschaeftspartner = GP { partner :: Name,
|
> data Geschaeftspartner = GP { partner :: Name,
|
||||||
> seit :: Datum
|
> seit :: Datum
|
||||||
> } deriving (Eq,Show)
|
> } deriving (Eq,Show)
|
||||||
> data Geschaeftsvorfall = Zahlung { brutto :: Brutto,
|
> data Geschaeftsvorfall = Zahlung { brutto :: Brutto,
|
||||||
> skonto :: Skonto,
|
> skonto :: Skonto,
|
||||||
> zahlung_vom :: Datum
|
> zahlung_vom :: Datum
|
||||||
> }
|
> }
|
||||||
> | Gutschrift { gutschrift :: Cent,
|
> | Gutschrift { gutschriftsbetrag :: Cent,
|
||||||
> gutschrift_vom :: Datum
|
> gutschrift_vom :: Datum
|
||||||
> }
|
> }
|
||||||
> deriving (Eq,Show)
|
> deriving (Eq,Show)
|
||||||
> type Kassabucheintrag = (Geschaeftspartner,Geschaeftsvorfall)
|
> type Kassabucheintrag = (Geschaeftspartner,Geschaeftsvorfall)
|
||||||
> newtype Kassabuch = KB [Kassabucheintrag] deriving (Eq,Show)
|
> 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
|
Aufgabe A.1
|
||||||
|
|
||||||
> type P_Geschaeftspartner = Geschaeftspartner
|
> type P_Geschaeftspartner = Geschaeftspartner
|
||||||
> data AP_Geschaeftsvorfall
|
> data AP_Geschaeftsvorfall
|
||||||
> = AP_Zahlung { netto :: Netto,
|
> = AP_Zahlung { netto :: Netto,
|
||||||
> zahlungsdatum :: Datum
|
> zahlungsdatum :: Datum
|
||||||
> }
|
> }
|
||||||
> | P_Gutschrift { gutschrift :: Cent,
|
> | P_Gutschrift { gutschrift :: Cent,
|
||||||
> gutschriftsdatum :: Datum
|
> gutschriftsdatum :: Datum
|
||||||
> } deriving (Eq,Show)
|
> } deriving (Eq,Show)
|
||||||
> type AP_Kassabucheintrag = (P_Geschaeftspartner,AP_Geschaeftsvorfall)
|
> type AP_Kassabucheintrag = (P_Geschaeftspartner,AP_Geschaeftsvorfall)
|
||||||
|
|
||||||
> waup :: Kassabucheintrag -> AP_Kassabucheintrag
|
> waup :: Kassabucheintrag -> AP_Kassabucheintrag
|
||||||
|
|
||||||
Knapp, aber gut nachvollziehbar geht waup folgendermassen vor:
|
Knapp, aber gut nachvollziehbar geht waup folgendermassen vor:
|
||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
Aufgabe A.2
|
Aufgabe A.2
|
||||||
|
|
||||||
> data EuroCent = EC { euro :: Nat1,
|
> 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)
|
> } deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
@ -75,12 +123,12 @@ Aufgabe A.2
|
|||||||
> zahlungsdatum' :: Datum
|
> zahlungsdatum' :: Datum
|
||||||
> }
|
> }
|
||||||
> | K_Gutschrift { ec_gutschrift :: EuroCent,
|
> | K_Gutschrift { ec_gutschrift :: EuroCent,
|
||||||
> gutschriftsdatum' :: Datum
|
> gutschriftsdatum' :: Datum
|
||||||
> } deriving (Eq,Show)
|
> } deriving (Eq,Show)
|
||||||
|
|
||||||
> newtype KonsolidiertesKassabuch
|
> newtype KonsolidiertesKassabuch
|
||||||
> = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)]
|
> = KKB [(P_Geschaeftspartner,K_Geschaeftsvorfall)]
|
||||||
> deriving (Eq,Show)
|
> deriving (Eq,Show)
|
||||||
|
|
||||||
> konsolidiere :: Kassabuch -> KonsolidiertesKassabuch
|
> konsolidiere :: Kassabuch -> KonsolidiertesKassabuch
|
||||||
|
|
||||||
@ -94,10 +142,10 @@ Aufgabe A.3
|
|||||||
> | Zahlungssaldo { zs :: EuroCent }
|
> | Zahlungssaldo { zs :: EuroCent }
|
||||||
> | Ausgeglichen
|
> | Ausgeglichen
|
||||||
> | Keine_Geschaeftsbeziehung deriving (Eq,Show)
|
> | Keine_Geschaeftsbeziehung deriving (Eq,Show)
|
||||||
|
|
||||||
> saldo :: P_Geschaeftspartner -> KonsolidiertesKassabuch -> Saldo
|
> 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
|
> saldiere :: Kassabuch -> SaldiertesKassabuch
|
||||||
|
|
||||||
Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor:
|
Knapp, aber gut nachvollziehbar geht saldiere folgendermassen vor:
|
||||||
...
|
...
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user