This repository has been archived on 2021-11-27. You can view files and clone it, but cannot push or open issues or pull requests.
fprog2021WS/code/Angabe6.hs
2021-11-21 20:01:06 +01:00

80 lines
2.0 KiB
Haskell

module Angabe6 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!
5. Ersetzen Sie die Trivialimplementierungen error "Nicht implementiert" durch
sinnvolle Implementierungen, die die jeweilige Aufgabenstellung erfüllen.
-}
type Nat0 = Int
type Nat1 = Int
type Zeilenzahl = Nat1
type Spaltenzahl = Nat1
type Zeile = Nat1
type Spalte = Nat1
type Skalar = Int
type Matrixtyp = (Zeilenzahl,Spaltenzahl)
type Matrixfkt = Zeile -> Spalte -> Skalar -- ausschliessl. total def. Abb.!
-- Matrizenwerte als Typ und funktionale Darstellung
data MatrixF = Mf { mtyp :: Matrixtyp, mf :: Matrixfkt }
-- Namesvereinbarung fuer den Fehlerwert
fehler = Mf (0,0) (\_ _ -> 0) :: MatrixF
-- Aufgabe A.1
instance Show MatrixF where
show (Mf t f) = error "Nicht implementiert!"
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer Show folgendermassen vor:
...
-}
-- Aufgabe A.2
matrixtyp :: MatrixF -> Maybe Matrixtyp
matrixtyp (Mf t f) = error "Nicht implementiert!"
{- Knapp, aber gut nachvollziehbar geht natrixtyp folgendermassen vor:
...
-}
-- Aufgabe A.4
instance Eq MatrixF where
(Mf t1 f1) == (Mf t2 f2) = error "Nicht implementiert!"
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer Eq folgendermassen vor:
...
-}
-- Aufgabe A.5
instance Num MatrixF where
(Mf t1 f1) + (Mf t2 f2) = error "Nicht implementiert!"
(Mf t1 f1) - (Mf t2 f2) = error "Nicht implementiert!"
(Mf t1 f1) * (Mf t2 f2) = error "Nicht implementiert!"
negate (Mf t f) = error "Nicht implementiert!"
abs (Mf t f) = error "Nicht implementiert!"
signum (Mf t f) = error "Nicht implementiert!"
fromInteger n = error "Nicht implementiert!"
{- Knapp, aber gut nachvollziehbar geht die Instanzbildung fuer Num folgendermassen vor:
...
-}