这是否类似于 setq
和 setf
?flet
和 labels
之间没有太大的区别吗?
此致敬礼!
这是否类似于 setq
和 setf
?flet
和 labels
之间没有太大的区别吗?
此致敬礼!
在Common Lisp中,flet
和labels
都可以进行词法绑定,但它们略有不同:
flet
是一种用于局部函数绑定的特殊形式。 绑定不是递归的,也不能相互引用。每个绑定包含函数名称、参数和函数体。
labels
是一种用于局部函数绑定的特殊形式。 绑定可以是递归的,并且可以相互引用。每个绑定包含函数名称、参数和函数体。
在Emacs Lisp中,稍有不同。 labels形式与flet类似,但它会对函数名称进行词法绑定而不是动态绑定。
foo
,它可以引用包含范围内另一个名为foo
的函数,而对于labels它会引用自身。 - Samuel Edwin Ward