(let (y f = let (g x u = f (x x) u) in g g) in (let (map f = y $ \ map xs -> case xs of (Cons x xs -> Cons (f x) (map xs)) (Nil -> Nil)) (mul = y $ \ rec a b -> case b of (0 -> 0) (n -> add a $ rec a $ add b $ negate 1)) in (let (factorial = y $ \ rec a -> case a of (0 -> 1) (a -> mul a $ rec $ add a $ negate 1)) in --map ( \ x -> add 1 x ) (Cons 1 $ Cons 2 Nil) ))) factorial 7)))