Parcourir la source

Improve fold slides

master
Julian Ospald il y a 5 ans
Parent
révision
7a2c1a9708
Aucune clé connue n'a été trouvée dans la base pour cette signature ID de la clé GPG: 220CD1C5BDEED020
2 fichiers modifiés avec 8 ajouts et 8 suppressions
  1. +4
    -4
      VL2/content/VL2_fold2.tex
  2. +4
    -4
      VL2/content/VL2_fold3.tex

+ 4
- 4
VL2/content/VL2_fold2.tex Voir le fichier

@@ -1,14 +1,14 @@
\ifger{Um es kurz zu machen, die abstrakte Lösung ist:}{To cut the story short, the abstract solution looks like this:}
\begin{haskellcode}
fold :: b -> (a -> b -> b) -> [a] -> b
fold z f [] = z
fold z f (x:xs) = x `f` (fold z f xs)
fold :: (a -> b -> b) -> b -> [a] -> b
fold f z [] = z
fold f z (x:xs) = x `f` (fold f z xs)
\end{haskellcode}
Whoa! What's going on here?\\
\ifger{Schauen wir genauer hin...}{Let's see...}
\begin{itemizep}
\item \hinline{z} \ifger{ist was die Funktion zurückgibt, wenn die Liste leer ist}{is what we return if the list is empty}
\item \hinline{f} \ifger{ist unsere Funktion}{is our function} (\ifger{z.b.}{e.g.} \hinline{(*)} \ifger{oder}{or} \hinline{(+)})
\item \hinline{z} \ifger{ist was die Funktion zurückgibt, wenn die Liste leer ist}{is what we return if the list is empty}
\item \ifger{das letzte Argument ist die eigentliche Liste, auf der wir arbeiten}{and the last remaining argument is the actual list we are working on}
\end{itemizep}
\slidep


+ 4
- 4
VL2/content/VL2_fold3.tex Voir le fichier

@@ -2,13 +2,13 @@
\pause
\begin{haskellcode}
sum :: [Int] -> Int
sum xs = fold 0 (\x y -> x + y) xs
sum xs = fold (\x y -> x + y) 0 xs
-- a Haskeller would write
sum = fold 0 (+)
sum = fold (+) 0

prod :: [Int] -> Int
prod xs = fold 1 (\x y -> x * y) xs
prod xs = fold (\x y -> x * y) 1 xs

length :: [a] -> Int
length xs = fold 0 (\x y -> 1 + y) xs
length xs = fold (\x y -> 1 + y) 0 xs
\end{haskellcode}

Chargement…
Annuler
Enregistrer