(define Y         ; applicative-order Y-combinator.
    (lambda (f)
      ((lambda (x) 
         (f (lambda (t) 
              ((x x) t))))
       (lambda (x) 
         (f (lambda (t) 
              ((x x) t)))))))

(define H
    (lambda (g)
      (lambda (n)
        (if (zero? n)
            1
            (* n (g (- n 1)))))))

((Y H) 5)

(((lambda (f)
    ((lambda (x) 
       (f (lambda (t) 
            ((x x) t))))
     (lambda (x) 
       (f (lambda (t) 
            ((x x) t))))))
  (lambda (g)
    (lambda (n)
      (if (zero? n)
          1
          (* n (g (- n 1)))))))
 6)