TU Wien:Funktionale Programmierung VU (Knoop)/Prüfung 2019-01-17

Aus VoWi
Zur Navigation springen Zur Suche springen

Aufgabe 1 (50%)[Bearbeiten | Quelltext bearbeiten]

Geben Sie Wert und allgemeinsten Typ für t1 bis t7 an! (Hier im VoWi kannst du die leeren Zeilen auswählen um die Lösungen zu sehen.)

mnr = tail [0,1,2,3,4,5,6,7] :: [Integer] -- Matrikelnummer
name = "Mustermann Max" :: String -- Name

t1 = ("p1", (drop 9.show)mnr, (take 3.zip name.tail)name)
{- t1 = ("p1", "5,6,7]", [('M','u'),('u','s'),('s','t')] :: ([Char], [Char], [(Char, Char)]) -}

t2 = (\a b c d -> ( (b.a)d, (a.b)d )) -- Nur allgemeinster Typ
{- t2 :: (a -> a) -> (a -> a) -> b -> a -> (a,a) -}

t3 = t2 (take 3) reverse (drop 3) mnr
{- t3 = ([3,2,1],[7,6,5]) :: ([Integer], [Integer]) -}

t4 = (drop 4 [[i-1] | i<-mnr], take 3 [i | i<-mnr, i>4])
{- t4 = ([[4],[5],[6]],[5,6,7]) :: ([[Integer]], [Integer]) -}

t5 = take 4 [[i|j<-[i..5]] | i<-mnr]
{- t5 = [[1,1,1,1,1], [2,2,2,2], [3,3,3], [4,4]] :: [[Integer]] -}

tls _ = (tail.reverse.tail.tail)
t6 = (tls 1 mnr, take 5 [(i,j)| i <- tls 2 mnr, j <- tls 3 mnr, j<i])
{- t6 = ([6,5,4,3],[(6,5),(6,4),(6,3),(5,4),(5,3)]) :: ([Integer], [(Integer, Integer)])  -}

p o (b:m) (a:l) n = o a b : p o l m n
p _ _ _ n = n

t7 = p (+) (reverse mnr) mnr [12]
{- t7 = [8,8,8,8,8,8,8,12] :: [Integer] -}

Beispiele 2-5 exakt wie TU Wien:Funktionale Programmierung VU (Knoop)/Prüfung 2018-01-18 (Einziger Unterschied: der Baum hieß BTp statt BTplus)