17 lines
1.4 KiB
TeX
17 lines
1.4 KiB
TeX
\ifger{Jetzt wissen wir wie reguläre Funktionen aussehen, z.b.:}{Now you know how a regular function looks like, e.g:}
|
|
\begin{haskellcode}
|
|
f :: Int -> Int
|
|
f x = x + 1
|
|
\end{haskellcode}
|
|
\ifger{Aber stellen wir uns vor, dass wir eine Hilfsfunktion benötigen, die sehr spezifisch ist und eigentlich zur aktuellen Funktion gehört. In C würden wir diese vermutlich top-level deklarieren und \cinline{static} machen.}{But now imagine we need a helper function which is very specific to the current function. In C we would have to define this new helper function at top-level and would probably make it \cinline{static}.}
|
|
\pause
|
|
\vspace{\baselineskip}
|
|
\\
|
|
\ifger{Haskell erlaubt uns hingegen Funktionen \emph{inline} zu definieren, z.b.:}{Haskell allows us to \textbf{inline} functions in a few more ways, e.g.:}
|
|
\begin{itemizep}
|
|
\item \ifger{über}{with} \hinline{where}
|
|
\item \ifger{über}{with} \hinline{let...in}
|
|
\item \ifger{anonym (lambda Abstraktion}{anonymously (lambda abstraction)}
|
|
\end{itemizep}
|
|
\slidep
|
|
\ifger{Viele Haskeller mögen es nicht, wenn man nicht-generische Funktionen top-level deklariert. Denn wir können immer noch atomare Funktionsteile haben und diese aber \emph{inline} definieren, sollten sie lediglich einmal benutzte Hilfsfunktionen sein.}{A lot of Haskellers really dislike if you put non-generic functions at the top level. So you can still have atomic pieces, but inline the parts which are very specific to the current function.} |