(1)
  foo []     = 0
  foo (x:xs) = if x<0 then 1 + foo xs else foo xs 
(2)
  bar xs = [ (x,y,z) | x<-xs, y<-xs, y==x+1, z<-xs, z==y+1 ]

(1)
  (λx y. y x y) (λz w. z) (λx y. y)
→ (λy. y (λz w. z) y) (λx y. y)(λx y. y) (λz w. z) (λx y. y)
→ (λy. y) (λx y. y)
→ λx y. y
(2)
  (λm n f. m (n f)) (λs z. s (s z)) (λs z. s (s (s z)))
→ (λn f. (λs z. s (s z)) (n f)) (λs z. s (s (s z)))
→ λf. (λs z. s (s z)) ((λs z. s (s (s z))) f)
→ λf z. (λs z. s (s (s z))) f ((λs z. s (s (s z))) f z)
→ λf z. (λz. f (f (f z))) ((λs z. s (s (s z))) f z)
→ λf z. f (f (f ((λs z. s (s (s z))) f z)))
→ λf z. f (f (f ((λz. f (f (f z))) z)))
→ λf z. f (f (f (f (f (f z)))))

(1) 11
(2) [1,3,5,0,2,4,1,3]