应用序,会先对运算符 test 和运算单元 0 和 (p) 进行求值,在求值运算单元 (p) 时就会出现死循环。
正则序,是先不求出运算对象的值,而是[b]直到实际需要它的值时才去运算求值[/b]。应当先将[b]运算对象表达式 (p) 直接代换形式参数[/b]:
这时条件表达式 if 的求值为 0,所以 (p) 不被要求做运算,也就不可能有死循环了。
(test 0 (p))
正则序,是先不求出运算对象的值,而是[b]直到实际需要它的值时才去运算求值[/b]。应当先将[b]运算对象表达式 (p) 直接代换形式参数[/b]:
(if (= 0 0) 0 (p))
这时条件表达式 if 的求值为 0,所以 (p) 不被要求做运算,也就不可能有死循环了。