From 07a642ef310a31dca0503e0f2aa0fc4012adab57 Mon Sep 17 00:00:00 2001 From: Ivaylo Ivanov Date: Sun, 24 Oct 2021 10:33:12 +0200 Subject: [PATCH] Rename UE1, add UE2 boilerplate --- code/{Aufgabe1.hs => Angabe1.hs} | 0 code/Angabe2.hs | 102 +++++++++++++++++++++++++++++++ 2 files changed, 102 insertions(+) rename code/{Aufgabe1.hs => Angabe1.hs} (100%) create mode 100644 code/Angabe2.hs diff --git a/code/Aufgabe1.hs b/code/Angabe1.hs similarity index 100% rename from code/Aufgabe1.hs rename to code/Angabe1.hs diff --git a/code/Angabe2.hs b/code/Angabe2.hs new file mode 100644 index 0000000..ae42c78 --- /dev/null +++ b/code/Angabe2.hs @@ -0,0 +1,102 @@ +module Angabe2 where + +{- 1. Vervollstaendigen Sie gemaess Angabentext! + 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! +-} + + +-- Aufgabe A.1 + +-- Ergaenzen Sie fehlende Typklassen in deriving-Klauseln, wo noetig und nicht explizit +-- eine Instanz-Deklaration gefordert ist. + + +type Nat1 = Int +newtype Vorname = Vorname String deriving Show +newtype Nachname = Nachname String deriving Show +data VHDS = Viertel | Halb | Dreiviertel | Schlag deriving (Eq,Ord) +data Stunde = Eins | Zwei | Drei | Vier | Fuenf | Sechs + | Sieben | Acht | Neun | Zehn | Elf + | Zwoelf deriving (Eq,Ord) +data VorNachMittag = VM | NM deriving (Eq,Ord) +newtype Uhrzeit = U (VHDS,Stunde,VorNachMittag) deriving (Eq,Ord) +data Tag = I | II | III | IV | V | VI | VII | VIII | IX | X + | XI | XII | XIII | XIV | XV | XVI | XVII | XVIII + | XIX | XX | XXI | XXII | XXIII | XXIV | XXV + | XXVI | XXVII | XXVIII | XXIX | XXX + | XXXI deriving (Eq,Ord) +data Monat = Jan | Feb | Mar | Apr | Mai | Jun + | Jul | Aug | Sep | Okt | Nov | Dez deriving (Eq,Ord) +type Jahr = Nat1 +data Datum = D Tag Monat Jahr deriving Eq +data Testart = PCR | Antigen deriving Eq +data Impfstoff = AstraZeneca | BioNTec | JundJ | Moderna + | Sputnik | Sinovac deriving (Eq,Show) +data Anzahl = Einmal | Zweimal deriving Eq +data DreiG_Status = Geimpft (Impfstoff,Anzahl) | Genesen + | Getestet Testart Datum Uhrzeit + | Udrei deriving (Eq,Show) + -- Udrei: Ungetestet, Ungenesen, Ungeimpft +data Regel = DreiG | ZweieinhalbG | ZweiG deriving Eq +data Person = P Vorname Nachname DreiG_Status deriving (Eq,Ord) +type Einlassbegehrende = [Person] +type VorUndNachname = String +type Einzulassende = [VorUndNachname] +type Abzuweisende = [VorUndNachname] +type Kontrollzeitpunkt = (Datum,Uhrzeit) +data Kontrollergebnis = Einlassen | Abweisen | Ungueltig deriving (Eq,Show) + + +-- Aufgabe A.2 + +einzulassen :: (Person,Regel,Kontrollzeitpunkt) -> Kontrollergebnis + + +{- Knapp, aber gut nachvollziehbar geht einzulassen folgendermassen vor: + ... +-} + +-- Aufgabe A.3 + +einzulassende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> Einzulassende + + +{- Knapp, aber gut nachvollziehbar geht einzulassende folgendermassen vor: + ... +-} + +-- Aufgabe A.4 + +einzulassende_abzuweisende :: Einlassbegehrende -> Regel -> Kontrollzeitpunkt -> ([Einzulassende],[Abzuweisende]) + +{- Knapp, aber gut nachvollziehbar geht einzulassende_abzuweisende folgendermassen vor: + ... +-} + + +-- Aufgabe A.5 + +instance Show Uhrzeit where + show ... + +{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Uhrzeit + folgendermassen vor: + ... +-} + + +instance Show Datum where + show ... + +{- Knapp, aber gut nachvollziehbar geht die Implementierung von show fuer Datum + folgendermassen vor: + ... +-} + + + + + +