在On Lisp(第 9 页)中,可以找到以下声明:
函数是 Lisp 程序的基石。它们也是 Lisp 的基石。在大多数语言中,+ 运算符与用户定义的函数完全不同。但是 Lisp 有一个单一的模型,函数应用程序,用来描述程序完成的所有计算。Lisp + 运算符是一个函数,就像您可以自己定义的那些一样。事实上,除了少数称为特殊形式的运算符外,Lisp 的核心是 Lisp 函数的集合。是什么阻止你添加到这个集合中?什么都没有:如果你想到了你希望 Lisp 能做的事情,你可以自己写,你的新函数将被视为内置函数。
我的问题是如何+
使用以下特殊运算符来实现运算符之类的东西?还是实际上使用了更多运算符,而格雷厄姆只是不够精确和戏剧化?
block let* return-from
catch load-time-value setq
eval-when locally symbol-macrolet
flet macrolet tagbody
function multiple-value-call the
go multiple-value-prog1 throw
if progn unwind-protect
labels progv
let quote
有没有办法查看这些函数的源代码?