Y-combinator in Racket supporting variant argumentsFirst Post: 2020-02-05Blog Link: [site]Y-combinator: 123456(define Y (lambda (g) (let ((d (lambda (f) (lambda args (apply (g (f f)) args))))) (d d)))) An example: 123456(let ((fact (Y (lambda (fact) (lambda (n) (if (zero? n) 1 (* n (fact (- n 1))))))))) (fact 10)) Another example: 123456(let ((gcd (Y (lambda (gcd) (lambda (a b) (if (zero? b) a (gcd b (remainder a b)))))))) (gcd 12 8))∧