巻末のYコンビネータ、同じものをSchemeで書いてみた。

(define G
  (lambda (h)
    (lambda (x)
      (h h) x)))

(define H
  (lambda (mkfact)
    (lambda (h)
      (mkfact (G h)))))

(define Y
  (lambda (mkfact)
    ((lambda (h) (h h)) (H mkfact))))

(define MkFact
  (lambda (g)
    (lambda (x)
      (cond
       ((eq? x 0) 0)
       (else (* x (g (- x 1))))))))

((Y MkFact) 3)

以下はG, Hに分けない版。

(define Y
  (lambda (le)
    ((lambda (f) (f f))
     (lambda (f)
       (le (lambda (x) (f f) x))))))