Kihagyás

4. gyakorlat

-- [1,2,3] -> 6

Ilyet a listagenerátor nem tud csinálni

Megoldás: rekurzió

Rekurzió

1. példa

sum' :: Num a => [a] -> a
sum' []     = 0
sum' (x:xs) = x + sum' xs
λ sum' [1,2,3]
-- nem üres -> x = 1, xs = [2,3] -> 1+sum' [2,3]
--   nem üres -> x = 2, xs = [3] -> 2+sum' [3]
--     nem üres -> x = 3, xs = [] -> 3+sum' [0]
--       a lista üres -> 0
-- ===> 1+2+3=6
6

2. példa

and :: [Bool] -> Bool
and' [] = True
and' (x:xs) = x && and' xs

3. példa

last :: [a] -> a
last [] = error "Anyud"
last [x] = x
last (_:xs) = last xs
init :: [a] -> a
init [] error "Sussy amongus"
init [_] = []
init (x:xs) = x:init xs