(define fact ; TYPE: (-> (natural) natural) (lambda (n) (if (zero? n) 1 (* n (fact (sub1 n)))))) (define fact2 ; TYPE: (-> (natural) natural) (lambda (n) (fact-it n 1))) (define fact-it ; TYPE: (-> (natural natural) natural) (lambda (int acc) (if (zero? int) acc (fact-it (sub1 int) (* acc int)))))