在惰性求值的情况下,形式化定义是可以完全正确运行的。
(defun fixpoint ( x y)
(funcall y (funcall x x y) )
)
(setq fun (fixpoint 'fixpoint
(lambda (s)
(lambda (n)
(if (> n 0)
(+ n (funcall s (- n 1) ) )
1
)
)
)
)
)
(funcall fun 10)
(funcall fun 100)
(setq fibs (fixpoint 'fixpoint
(lambda (s)
(lambda (n)
(if (> n 0)
(+ (funcall s (- n 2) ) (funcall s
(- n 1) ) )
1
)
)
)
)
)
(funcall fibs 5)
(funcall fibs 6)
(funcall fibs 7)
(funcall fibs 8)