Ⅰ
(1)
foo [] = 1
foo (x:xs) = if odd x then x * foo xs else foo xs
(2)
bar n = [ (x,y) | x<-[0..n], y<-[0..n], odd (x+y) ]
Ⅱ
(1)
(λx y z. x z (y z)) ((λx y. x) (λx y z. x z (y z))) (λx y. x)
→ (λy z. (λx y. x) (λx y z. x z (y z)) z (y z)) (λx y. x)
→ λz. (λx y. x) (λx y z. x z (y z)) z ((λx y. x) z)
→ λz. (λy x y z. x z (y z)) z ((λx y. x) z)
→ λz. (λx y z. x z (y z)) ((λx y. x) z)
→ λz y w. (λx y. x) z w (y w)
→ λz y w. (λy. z) w (y w)
→ λz y w. z (y w)
(2)
(λx y z. x z (y z)) (λx y. x) (λx y. x)
→ (λy z. (λx y. x) z (y z)) (λx y. x)
→ λz. (λx y. x) z ((λx y. x) z)
→ λz. (λy. z) ((λx y. x) z)
→ λz. z
Ⅲ
(1) [(1,1),(1,2),(2,3),(3,5),(5,8),(8,13)]
(2) [(1,2),(3,4)]