{---------------------------------------------------------- Datei mit Beispielen zu Funktionen hoeherer Ordnung ----------------------------------------------------------- -- einige in Prelude.hs vordefinierte Funktionen hoeherer Ordnung: -- Funktionskomposition (.) :: (b -> c) -> (a -> b) -> (a -> c) (f . g) x = f (g x) -- Listentransformation map :: (a -> b) -> [a] -> [b] map f xs = [ f x | x <- xs ] -- Listenfilterung filter :: (a -> Bool) -> [a] -> [a] filter p xs = [ x | x <- xs, p x ] -- Listenfaltung foldl :: (a -> b -> a) -> a -> [b] -> a foldl f z [] = z foldl f z (x:xs) = foldl f (f z x) xs foldr :: (a -> b -> b) -> b -> [a] -> b foldr f z [] = z foldr f z (x:xs) = f x (foldr f z xs) -----------------------------------------------------------} -- Textverschluesselung nach der Caesarmethode code :: Char -> Char code x | letter x = xox | otherwise = x where ox = ord x + 13 xox = if (upperLetter x && ox > ord 'Z') || (lowerLetter x && ox >= ord 'z') then chr (ox - 26) else chr ox caesar :: String -> String caesar str = map code str upperLetter, lowerLetter, letter :: Char upperLetter x = x >= 'A' && x <= 'Z' lowerLetter x = x >= 'a' && x <= 'z' letter x = upperLetter x || lowerLetter x