Dan*_*our 6 lisp
我正在寻找fexprs的(现实世界)用法,它们的使用方式与懒惰评估所能达到的方式不同.
我可以找到的大多数示例仅使用fexprs来实现条件评估,例如短路"和"操作(评估第一个参数,如果为false,则不评估第二个并直接返回false).
我正在寻找"有用"的用途,即使用fexpr导致代码比没有fexprs时可以做到的"更好"(更干净).
mal*_*per 2
您想要使用 fexprs 有两个主要原因。
第一个是因为它们允许您任意次数地评估参数。这使得实现像您建议的那样延迟评估其参数的运算符成为可能。以这种方式构建的构造还能够多次评估其参数。这使得通过 fexprs 实现循环成为可能!
另一种情况是转型。转换代码基本上是在现有 Lisp 之上编写编译器的一种方法。尽管cl- who 使用宏而不是 fexprs,但它是可以进行的转换类型的一个很好的示例。
归档时间:
10 年,4 月 前
查看次数:
296 次
最近记录:
9 年,11 月 前