Skip to content
Snippets Groups Projects
Aufgabe1.lhs 1.2 KiB
Newer Older
  • Learn to ignore specific revisions
  • Yannick Gottschalk's avatar
    Yannick Gottschalk committed
    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!"