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: ... -}