2015-04-23 20:57:25 +00:00
\ifger { Und jetzt können wir Funktionen verketten, egal wieviele:} { And now you can chain functions together. Not just two! Look:}
2015-04-19 22:32:50 +00:00
\begin { haskellcode}
f :: String -> Bool
f xs = (even . length . (\x -> x ++ "Hello world")) xs
-- or less ugly
f xs = even . length . (\x -> x ++ "Hello world") $ xs
\end { haskellcode}
% $
\pause
2015-04-23 20:57:25 +00:00
\ifger { Ein anderes Beispiel, bei dem Currying tatsächlich relevant ist:} { Another example where currying is actually important:}
2015-04-19 22:32:50 +00:00
\begin { haskellcode}
f :: Int -> Bool
f x = even . (+) 3 . (-) 4 $ x
-- why not this?
f x = even . (+) 3 . (-) $ 4 x
\end { haskellcode}
%$
\pause
2015-04-23 20:57:25 +00:00
\ifger { Aber es gilt hier einige wichtige Dinge zu beachten:} { So there are a few things that we have to be aware of:}
2015-04-19 22:32:50 +00:00
\begin { itemize}
2015-04-23 20:57:25 +00:00
\item \ifger { die Typen müssen passen!} { the types have to fit!}
\item \ifger { die Arität muss passen!} { the arity has to fit!}
2015-04-19 22:32:50 +00:00
\end { itemize}
2015-04-23 20:57:25 +00:00
\ifger { Das klingt anfangs kompliziert, weil es für die gesamte Verkettung gilt, aber man kommt sehr schnell rein.} { That sounds complicated at first, because it counts for the whole composition chain. But you'll get used to it.}