80 lines
2.0 KiB
Haskell
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:
|
||
|
...
|
||
|
-}
|