有关lambda语法的疑问

了解。

不,我想表达的是类似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))))))

我(从字面上)不认为这是两种一样的表达式,因为如果想让程序替实现表达式拼接,需要事先告知程序,解释器使用的是什么求值顺序,才能令它生成“合法”的代码。此句中的“合法”,我认为和具体实现有关。

前提就错了

(form args …) 原则上等价的是 (funcall #'form args …)

后面你说的啥我都不会看的,过程错了结果不论是否正确都没有确认的价值

明白,但理解的角度不一样。你说的是实现细节下的语法约束;而我站在直观上使用表达式的角度。

难道让人闭嘴就是解决问题的方式?

不存在直观的角度,脱离语义的空想没有意义。

那我只能替我自己因为失去了一个交流的窗口而感到惋惜。

可语义是人为定义的。

但定义的人不是你。所以,你不愿意遵守这个规则,故意抛开事实不谈,就没有讨论的价值。