为什么FEXPRs被放弃在Common Lisp?

lon*_*jil 7 lisp fexpr

许多LISP有FEXPR,但它们不包括在CL中.
我读到这是因为FEXRP与静态分析不兼容.
有人可以解释一下吗?

Rob*_*vey 6

来自维基百科关于 FEXPRs 的文章

在 1980 年的 Lisp 和函数式编程会议上,Kent Pitman 发表了一篇论文“Lisp 中的特殊形式”,其中讨论了宏和 fexprs 的优缺点,并最终谴责了 fexprs。他的主要反对意见是,在允许 fexprs 的 Lisp 方言中,静态分析通常无法确定运算符是代表普通函数还是 fexpr——因此,静态分析无法确定是否对操作数进行求值。特别是,编译器无法判断子表达式是否可以安全地优化,因为子表达式可能在运行时被视为未计算的数据。


pio*_*kuc 6

Kent Pitman呼吁放弃 fexpr,因为它似乎无法编译。

有关 fexpr 的深入讨论,请参阅 John N. Shutt 的博士论文 Fexprs 作为 Lisp 函数应用程序的基础或 $vau:最终抽象