了解。
不,我想表达的是类似Y Combinator 里的 5.Lazy evaluation form vs strict evaluation form。
这相当于,解释器的求值顺序会影响你如何写、或者说如何拼接你的表达式。
When lazy evaluation is possible, the Y combinator in scheme looks like:
(define Y
(lambda (f)
((lambda (x) (f (x x)))
(lambda (x) (f (x x))))))
This is called normal-order form
When only strict evaluation is allowed, the combinator looks like:
(define Y
(lambda (f)
((lambda (x) (f (lambda (y) (x x) y)))
(lambda (x) (f (lambda (y) (x x) y))))))
我(从字面上)不认为这是两种一样的表达式,因为如果想让程序替实现表达式拼接,需要事先告知程序,解释器使用的是什么求值顺序,才能令它生成“合法”的代码。此句中的“合法”,我认为和具体实现有关。