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