haskell-lectures/VL2/content/VL2_more_ways_to_define_fun...

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 einige Hilfsfunktionen 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.}