48 lines
1.2 KiB
Plaintext
48 lines
1.2 KiB
Plaintext
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!"
|