在普通的 lisp 中,labels 和 flet 这两个名字对我来说有些奇怪。
flet 可以描述为 f 函数的一种 let。所以就这样命名了。 标签呢?
getf、setf、remf 的“f”从何而来?
谢谢。
最佳答案
LABEL(没有 s)是一个非常古老的(来自早期的 Lisp 方言)构造,它允许给函数命名,以便它可以使用该名称调用自身:
类似于(这不是有效的 Common Lisp):
(label 'ff (lambda (x) (if (foo) (bar) (ff (baz)))))
它标签是一个有名字的函数。
对于 Common Lisp,此名称已被回收。 LABELS 现在允许定义可以通过名称调用自身的局部函数。
关于common-lisp - 普通 lisp 中的这些命名从何而来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1886212/