TU Wien:Funktionale Programmierung VU (Knoop)/Prüfung 2008-06-23

Aus VoWi
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],[])]

Was ist Abseits?[Bearbeiten | Quelltext bearbeiten]

Bedeutung der Ackermann-Funktion für Berechnungsmodelle?[Bearbeiten | Quelltext bearbeiten]