lisp - 重要的 fexpr 用法示例

标签 lisp

我正在寻找 fexprs 的(现实世界)用途,它们的使用方式不同于惰性求值。

我能找到的大多数示例仅使用 fexprs 来实现条件评估,例如短路“和”操作(评估第一个参数,如果为假,则不评估第二个参数并直接返回 false)。

我正在寻找“有用”的用途,即使用 fexpr 导致代码比没有 fexpr 时可以完成的代码“更好”(更干净)。

最佳答案

您想要使用 fexprs 的主要原因有两个。

第一个是因为它们允许您对参数求值任意次数。这使得实现像您建议的那样惰性地评估其参数的运算符成为可能。以这种方式构建的结构也能够不止一次地评估他们的论点。这使得通过 fexprs 实现循环成为可能!

另一种情况是用于转换。转换代码基本上是一种在现有 Lisp 之上编写编译器的方法。虽然它使用宏而不是 fexprs,cl-who是可以进行的那种转换的一个很好的例子。

关于lisp - 重要的 fexpr 用法示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29756288/

相关文章:

emacs - 如何通过elisp创建一个空文件?

java - 使用 Lisp 或 Scheme 进行 Java 程序的运行时配置

linux - 如何检查 Xorg 是否在 emacs lisp 中运行?

string - 检查字符串是否只是字母(没有符号和数字)lisp

lisp - 同调性水平

functional-programming - 字符表示 clojure

lisp - 将数字列表分解为数字

lisp - System.exit(0) 的 lisp 等价物是什么?

lisp:如何在范围内创建临时方法特化

c# - LISP 开发人员将如何解决 AutoMapper 在 .NET 中解决的问题?