; Simple fixed point combinator. It's basic, but it does the job... (define (fix function) (lambda args (apply function (cons function args)))) (define factorial (fix (lambda (f x) (if (< x 2) 1 (* x (apply f (list f (- x 1))))))))