在Lisp中是函数“1+;”只是糖?

在Lisp中是函数“1+;”只是糖?,lisp,common-lisp,Lisp,Common Lisp,我刚开始学Lisp。首先要掌握的概念之一似乎是前缀符号(即,不写“1+2”,而写“+12”)。因此,我试图找出1+函数存在的原因 选择(+12)或(1+2)的原因是什么 只是糖吗?它是用于代码优化的吗?是为了可读性吗 也许有更复杂的函数调用示例可以说明1+函数存在的原因。如果您有任何见解,我们将不胜感激。请记住,Common Lisp的一部分是将许多实现已经具备的功能标准化。因此,如果许多实现已经有了1+函数,那么就足以包含它了。引用CLtL2(MacLisp和Lisp机器Lisp)的实现。但为

我刚开始学Lisp。首先要掌握的概念之一似乎是前缀符号(即,不写“1+2”,而写“+12”)。因此,我试图找出
1+
函数存在的原因

选择
(+12)
(1+2)
的原因是什么

只是糖吗?它是用于代码优化的吗?是为了可读性吗


也许有更复杂的函数调用示例可以说明
1+
函数存在的原因。如果您有任何见解,我们将不胜感激。

请记住,Common Lisp的一部分是将许多实现已经具备的功能标准化。因此,如果许多实现已经有了1+函数,那么就足以包含它了。引用CLtL2(MacLisp和Lisp机器Lisp)的实现。但为什么这些实现一开始就有它呢?它在循环中很有用,例如

(do ((x 0 (1+ x)))
    ((= x 10))
  ; ...
  )
在那里,(+x1)也可以。但是在很多情况下,间接调用这种函数很方便,而且(mapcar'1+…)(mapcar(lambda(x)(+1 x))…)更容易

但事实就是这样。向某个对象添加一个(或减去一个;还有1-)是一个非常常见的操作,因此有一个函数可以方便地执行此操作。如果有硬件支持,那么实现也可以对其进行优化。(尽管注意到“鼓励实施者使[(1+数字)和(+1数字)]的性能相同。”)由于这些功能可用且广泛使用,它们是表示意图的一个非常好的方式。例如,当你打算写(+2 x)时,你可以打字并写(+1 x),但如果你真的写了(1+x),你就不太可能想加两个。这些函数在Common Lisp中是惯用的(例如,请参见)。Emacs Lisp也是如此


如果没有这种语言,它不会受到很大的影响,但它会被许多不同的人多次重新实现。例如,球拍工具和球拍。(另请参见。)

通用Lisp语言:

包括这些主要是为了与MacLisp和Lisp Machine Lisp兼容。有些程序员总是喜欢编写(+x1)和(-x1),而不是(1+x)和(1-x)


实际上,这可以追溯到早期的Lisp。1962年的Lisp1.5已经有了。这些函数被称为
ADD1
SUB1

谢谢,非常有用,信息丰富。我以前没有考虑过标准化部分。