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