Skip to content
Snippets Groups Projects
Aufgabe1.hs 1.32 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!"