特殊函数之所以得到这个名称,是因为它们不同于宏和普通函数。
就像宏一样,特殊的函数做而不是来评估它们的输入。但是与宏不同的是,它们做的是而不是返回要计算的Lisp表达式。特殊的函数提供了构建Lisp的原语,例如赋值、条件和块结构。
1989年,David . Touretzky写道,有24内置的通用Lisp 特殊函数
BLOCK,CATCH,COMPILER-LET,DECLARE,EVAL-WHEN,FLET,FUNCTION,GO,IF,LABELS,LET,LET*,MACROLET,MULTIPLE-VALUE-CALL,MULTIPLE-VALUE-PROG1,PROGN,PROGV,QUOTE,RETURN-FROM,SETQ,TAGBODY,THE,THROW;UNWIND-PROTECT.他还说:
这个列表可能会随着通用Lisp标准的未来修订而改变。
这本书于2014年重新发行。然而,这些资料是一样的。即使在2014年的这本书中,这本书的开头也和1989年的第一版完全一样:
截至1989年年中,24个内置的Lisp特殊功能是:.(第507页)。
我不确定他们是否仔细看过这一点,如果他们看了,我想他们会更新到“从mid-2014...”开始“这一年。
因此,到2021年中期,这个名单与1989年的现在的有什么不同吗?
资料来源:1-通用LISP:符号计算入门
发布于 2021-08-21 08:40:12
在通用Lisp标准(1994年发布)中,没有特殊功能的概念。该标准定义了特殊运算符的概念,这些不能是函数。正如Ness评论的那样,特殊操作符在Common中列出(它是从标准派生的HTML页面,原始标准以打印文档和PDF文件的形式发布):3.1.2.1.2.1特别表格。这是一个固定列表->,标准没有提供给Common用户添加新的语言机制。虽然我认为Common的一些实现有一些额外的特殊操作符。
为什么这本书不使用通用Lisp标准的术语?也许作者没有意识到这一点,或者认为更新措辞以使用标准措辞过于复杂(或太费劲)--这可能意味着要改变案文中的许多内容。
另一个有用的参考是PDF格式的标准的后期草案:拟议的ANSI CL标准草案。草案的内容与公布的标准基本相同,但可免费查阅。Common也有基本相同的内容,但形式不同。
https://stackoverflow.com/questions/68868958
复制相似问题