Common Lisp中“flet”和“label”之间有什么区别?

时间:2012-02-02 01:23:11

标签: common-lisp

是否与setqsetf类似? fletlabels之间没有太大区别?

此致!

1 个答案:

答案 0 :(得分:33)

在Common Lisp中,fletlabels都会使词汇绑定略有不同:

  • flet是本地函数绑定的特殊形式。 绑定不是递归的,不能互相引用。每个绑定包含函数名称,参数和函数体。

  • labels是本地函数绑定的特殊形式。 绑定可以是递归的,可以互相引用。每个绑定包含函数名称,参数和函数体。

在Emacs Lisp中,有一点不同。 标签表单类似于 flet ,除了它使函数名称的词法绑定而不是动态绑定。