type Church t = (t -> t) -> t -> t
int2church :: Integer -> Church t
--int2church n = \s -> \z -> iterate s z !! (fromIntegral n)
--int2church 0 = \s -> \z -> z
--int2church n = \s -> \z -> s (int2church (n-1) s z)
int2church 0 s z = z
int2church n s z = s (int2church (n-1) s z)
church2int :: Church Integer -> Integer
church2int c = c (+1) 0