Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
Aufgabe 1
=========
> module Aufgabe1 where
Gegeben ist der Datentyp Pred a, der eine Prüffunktion (Prädikat) repräsentiert,
die einen Wert vom Typ a zu einem Wert vom Typ Bool auswertet.
Beachten Sie, dass mit dem Wertekonstruktor Pred bereits eine Funktion
Pred :: (a -> Bool) -> Pred a
gegeben ist, mit der Sie ein Prädikat "einpacken" können.
> newtype Pred a = Pred (a -> Bool)
Schreiben Sie eine Funktion unPred, die das Prädikat "auspackt".
> unPred :: Pred a -> (a -> Bool)
>
> unPred = undefined
Da Haskell-Funktionen grundsätzlich “gecurried” sind, bzw. der (->)-Operator
rechtsassoziativ ist, können Sie die Klammern hinten in der Signatur auch weglassen
und erhalten unPred :: Pred a -> a -> Bool, was man zugleich als “wende Pred a an,
wenn du ein a bekommst” lesen kann.
Definieren Sie nun eine Funktion isVowel, die prüft, ob ein Buchstabe ein Vokal ist.
> isVowel :: Pred Char
>
> isVowel = undefined
Schreiben Sie eine Funktion filterVowels, die alle Vorkommen von Vokalen aus
einem String entfernt. Verwenden Sie hierfür das Prädikat isVowel.
> filterVowels :: String -> String
>
> filterVowels = undefined
> result :: String
>
> result = filterVowels "Hello World!"