Add UE5 boilerplate
This commit is contained in:
parent
a8e05a319e
commit
6b7ca28fe0
@ -1,4 +1,4 @@
|
|||||||
FROM haskell:buster
|
FROM docker.io/haskell:buster
|
||||||
|
|
||||||
RUN apt-get update && apt-get install -y haskell-platform
|
RUN apt-get update && apt-get install -y haskell-platform
|
||||||
|
|
||||||
|
172
code/Angabe5.hs
Normal file
172
code/Angabe5.hs
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
module Angabe5 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!
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
type Nat0 = Int
|
||||||
|
|
||||||
|
|
||||||
|
-- Die selbstdefinierte Typklasse Menge_von:
|
||||||
|
|
||||||
|
class Eq a => Menge_von a where
|
||||||
|
leer :: [] a
|
||||||
|
vereinige :: [] a -> [] a -> [] a
|
||||||
|
schneide :: [] a -> [] a -> [] a
|
||||||
|
ziehe_ab :: [] a -> [] a -> [] a
|
||||||
|
ist_teilmenge :: [] a -> [] a -> Bool
|
||||||
|
ist_obermenge :: [] a -> [] a -> Bool
|
||||||
|
ist_element :: a -> [] a -> Bool
|
||||||
|
ist_leer :: [] a -> Bool
|
||||||
|
sind_gleich :: [] a -> [] a -> Bool
|
||||||
|
anzahl :: a -> [] a -> Nat0
|
||||||
|
|
||||||
|
-- Protoimplementierungen
|
||||||
|
leer = []
|
||||||
|
vereinige xs ys = xs ++ ys
|
||||||
|
ist_teilmenge xs ys = ist_obermenge ys xs
|
||||||
|
ist_obermenge xs ys = ist_teilmenge ys xs
|
||||||
|
ist_element x xs = anzahl x xs >= 1
|
||||||
|
ist_leer xs = xs == leer
|
||||||
|
sind_gleich xs ys = ist_teilmenge xs ys && ist_teilmenge ys xs
|
||||||
|
|
||||||
|
|
||||||
|
-- Weitere Typen:
|
||||||
|
|
||||||
|
newtype Paar a b = P (a,b) deriving (Eq,Show)
|
||||||
|
|
||||||
|
data Zahlraum_0_10 = N | I | II | III | IV | V | VI
|
||||||
|
| VII | VIII | IX | X | F deriving (Eq,Ord,Show)
|
||||||
|
|
||||||
|
newtype Funktion = Fkt { f :: Zahlraum_0_10 -> Zahlraum_0_10 }
|
||||||
|
|
||||||
|
data Baum a = Blatt a | Knoten (Baum a) a (Baum a) deriving (Eq,Show)
|
||||||
|
|
||||||
|
newtype ElemTyp a = ET a
|
||||||
|
|
||||||
|
-- Pseudoheterogene Elementtypen
|
||||||
|
data PH_ElemTyp a b c d e = A a | B b | C c | D d | E e deriving (Eq,Show)
|
||||||
|
data PH_ElemTyp' q r s = Q q | R r | S s deriving (Eq,Show)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.1
|
||||||
|
|
||||||
|
instance Num Zahlraum_0_10 where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer Num folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.2
|
||||||
|
|
||||||
|
instance Eq Funktion where
|
||||||
|
...
|
||||||
|
|
||||||
|
instance Show Funktion where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar gehen die beiden Instanzbildungen fuer
|
||||||
|
Eq und Show folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.3
|
||||||
|
|
||||||
|
instance Menge_von Int where
|
||||||
|
...
|
||||||
|
|
||||||
|
instance Menge_von Zahlraum_0_10 where
|
||||||
|
...
|
||||||
|
|
||||||
|
instance Menge_von Funktion where
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar gehen die drei Instanzbildungen fuer
|
||||||
|
Menge_von folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.4
|
||||||
|
|
||||||
|
instance (Eq a,Eq b) => Menge_von (Paar a b) where
|
||||||
|
...
|
||||||
|
|
||||||
|
instance Eq a => Menge_von (Baum a) where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar gehen die beiden Instanzbildungen fuer
|
||||||
|
Menge_von folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.5
|
||||||
|
|
||||||
|
instance Eq a => Eq (ElemTyp a) where
|
||||||
|
...
|
||||||
|
|
||||||
|
instance Show a => Show (ElemTyp a) where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar gehen die beiden Instanzbildungen fuer
|
||||||
|
Eq und Show folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.6
|
||||||
|
|
||||||
|
instance Eq a => Menge_von (ElemTyp a) where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer
|
||||||
|
Menge_von folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.7
|
||||||
|
|
||||||
|
instance (Eq a,Eq b,Eq c,Eq d,Eq e) => Menge_von (PH_ElemTyp a b c d e) where
|
||||||
|
...
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer
|
||||||
|
Menge_von folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-- Aufgabe A.8
|
||||||
|
|
||||||
|
instance (Eq p,Eq q,Eq r) => Menge_von (PH_ElemTyp' p q r) where ...
|
||||||
|
|
||||||
|
|
||||||
|
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer
|
||||||
|
Menge_von folgendermassen vor:
|
||||||
|
...
|
||||||
|
-}
|
||||||
|
|
||||||
|
|
Reference in New Issue
Block a user