haskell-lectures/VL1/content/VL1_lists3.tex

15 rivejä
458 B
TeX

Again, we can do pattern matching on lists.
\begin{haskellcode}
listLen :: [Integer] -> Integer
listLen [] = 0
listLen (x:xs) = 1 + listLen xs
\end{haskellcode}
\pause
We can also nest pattern matching:
\begin{haskellcode}
sumEveryTwo :: [Integer] -> [Integer]
sumEveryTwo [] = 0
sumEveryTwo (x:[]) = [x]
sumEveryTwo (x:(y:zs)) = (x + y) : sumEveryTwo zs
\end{haskellcode}
Note that \hinline{(x:(y:zs))} may also be written as \hinline{(x:y:zs)}.