TU Wien:Funktionale Programmierung VU (Knoop)/Prüfung 2008-06-23
Zur Navigation springen
Zur Suche springen
Gesucht war eine Funktion fac zur Fakultätsberechnung, die mit schlichtem Rekursionstyp auskommt.[Bearbeiten | Quelltext bearbeiten]
Mein Ansatz:
fac :: Int -> Int
fac 0 = 1
fac n = fachelp n 1
fachelp :: Int -> Int -> Int
fachelp 0 n = n
fachelp m o = fachelp (m-1) (m*o)
Diese Lösung ist falsch. Meine Lösung ist: --Barfoos (Diskussion) 12:59, 16. Feb. 2016 (CET)
fac :: Integer -> Integer
fac 0 = 1
fac n = n * fac (n-1)
Was bedeuten folgende Zeichen in Haskell:[Bearbeiten | Quelltext bearbeiten]
- ++
- --
- >>
Gesucht war eine Funktion die das arithmetische Mittel der Knotenwerte berechnet.[Bearbeiten | Quelltext bearbeiten]
- Welcher Rekursionstyp(en) wurde(n) verwendet?
data Tree = Nil | Node Float Tree Tree Tree
Gesucht war eine Instanz von Eq zu:[Bearbeiten | Quelltext bearbeiten]
data Tree = Nil | Vertex Integer [Tree]
Mein Ansatz:
instance Eq Tree where
(==) Nil Nil = True
(==) (Vertex i1 t1) (Vertex i2 t2) = i1 == i2 && t1 == t2
(==) _ _ = False
- Weiters war ein algemeinerer Typ PTree gesucht mit a anstatt Integer
data PTree a = Nil | Node a [(PTree a)]
instance (Eq a) => Eq (PTree a) where
(==) Nil Nil = True
(==) (Vertex i1 t1) (Vertex i2 t2) = i1 == i2 && t1 == t2
(==) _ _ = False
Führt die Definition beider Datentypen in einem File zu Konflikten?
Ja, wegen Nil und Vertex...
Gegeben: Funktion g:[Bearbeiten | Quelltext bearbeiten]
g [] = [([],[])]
g (x:xs) = ([],(x:xs)) : [(x:ps,qs) | (ps,qs) <- g xs]
- Wie lautet die Signatur?
g :: [a] -> [([a],[a])]
- Was macht die Funktion?
- Aufruf g [1,2,3] führt zu?
[([],[1,2,3]),([1],[2,3]),([1,2],[3]),([1,2,3],[])]