Реализация FIXED-POINT

Реализуем "чёрный ящик" для нахождения fixed-point:

(defvar tolerance 0.00001)

(defun fixed-point (f first-guess)
 (labels ((close-enough-p (x y)    ; достаточно приблизилось?
            (<= (abs (- x y)) tolerance))
          (try (guess)
            (let ((next (funcall f guess)))
              (if (close-enough-p guess next)
                  next
                  (try next)))))
    (try first-guess)))