Safe Haskell | Safe |
---|

# Exercise 2

Using the definitions

```
foldr f b [] = b
foldr f b (x:xs) = x
````f`

foldr f b xs

and

```
foldl f b [] = b
foldl f b (x:xs) = foldl f (b
````f`

x) xs

The expression `foldr (-) 0 [1,2,3]`

can be evaluated as

foldr (-) 0 [1,2,3] = 1 - foldr (-) 0 [2,3] = 1 - (2 - foldr (-) 0 [3]) = 1 - (2 - (3 - foldr (-) 0 [])) = 1 - (2 - (3 - 0)) = 2

and the expression `foldl (-) 0 [1,2,3]`

as

foldl (-) 0 [1,2,3] = foldl (-) (0 - 1) [2,3] = foldl (-) ((0 - 1) - 2) [3] = foldl (-) (((0 - 1) - 2) - 3) [] = ((0 - 1) - 2) - 3 = - 6

# Exercise 3

# Exercises 4 and 5

See Grep.