Common lisp exp是expt的旧形式吗?

Common lisp exp是expt的旧形式吗?,common-lisp,Common Lisp,我在Tanimoto的《使用Common Lisp的人工智能要素》中发现了这一点: 那不应该是expt而不是exp吗?这个程序,在很多我认为应该是expt的地方使用exp。我缺少什么?这只是历史问题吗?或者这是一个错误?expt和exp的行为在HyperSpec条目中描述。expn返回en,而expt x y返回xy。这与你的理解是一致的 exp和expt执行幂运算 exp返回提升到幂数的e,其中e是 自然对数。exp没有分支切割 expt返回提升为幂次幂次的基数。如果 基数是有理数,幂数是整数

我在Tanimoto的《使用Common Lisp的人工智能要素》中发现了这一点:

那不应该是expt而不是exp吗?这个程序,在很多我认为应该是expt的地方使用exp。我缺少什么?这只是历史问题吗?或者这是一个错误?

expt和exp的行为在HyperSpec条目中描述。expn返回en,而expt x y返回xy。这与你的理解是一致的

exp和expt执行幂运算

exp返回提升到幂数的e,其中e是 自然对数。exp没有分支切割

expt返回提升为幂次幂次的基数。如果 基数是有理数,幂数是整数 计算准确,结果为有理型; 否则,可能会产生浮点近似值。出口 复有理到整数次幂,计算必须精确 结果为有理型或复合有理型

谷本也知道这一点。在第519第一版的词汇表中,有对Common Lisp的exp和expt的描述。然而,在这里,这些符号的使用方式不同。Tanimoto正在开发符号代数系统,并使用符号exp表示指数表达式。排队

(setf  f0 '(d (+ (exp x 2) (* 2 x)) x))
f0的值就是列表d+expx2*2x。执行的不是代码。关键是它是一个代数表达式。它只是一个嵌套的符号和数字列表。d根本不是公共Lisp中定义的函数。稍后,在第99页第一版中,Tanimoto定义了一些符号区分规则:

(setq exp0-rule '(
  simplify
  (exp (? e1) 0)
  1
  exp0-rule
  ) )
这些基于第96页所述的数学规则,其中:

EXP0-RULE:x0=1 EXP1-RULE:x1=x

expt和exp的行为在HyperSpec条目中描述。expn返回en,而expt x y返回xy。这与你的理解是一致的

exp和expt执行幂运算

exp返回提升到幂数的e,其中e是 自然对数。exp没有分支切割

expt返回提升为幂次幂次的基数。如果 基数是有理数,幂数是整数 计算准确,结果为有理型; 否则,可能会产生浮点近似值。出口 复有理到整数次幂,计算必须精确 结果为有理型或复合有理型

谷本也知道这一点。在第519第一版的词汇表中,有对Common Lisp的exp和expt的描述。然而,在这里,这些符号的使用方式不同。Tanimoto正在开发符号代数系统,并使用符号exp表示指数表达式。排队

(setf  f0 '(d (+ (exp x 2) (* 2 x)) x))
f0的值就是列表d+expx2*2x。执行的不是代码。关键是它是一个代数表达式。它只是一个嵌套的符号和数字列表。d根本不是公共Lisp中定义的函数。稍后,在第99页第一版中,Tanimoto定义了一些符号区分规则:

(setq exp0-rule '(
  simplify
  (exp (? e1) 0)
  1
  exp0-rule
  ) )
这些基于第96页所述的数学规则,其中:

EXP0-RULE:x0=1
EXP1-RULE:x1=x

我想我现在明白了。注意,不要把exp看作CL函数exp。这可能是一个错误的伪符号选择。顺便说一句,我是在第二版的塔尼莫托。我不认为这真的是一个可怕的选择,但有一些潜在的混乱,肯定。在公式的符号表示和提供数学函数的编程语言中肯定会有一些重叠。是的,现在知道了。但我想我们在看不同版本的《塔尼莫托》。页码不匹配。我,第二版。@147pm是的,我更新了我的答案,提到了第一版,我认为它是,因为它是1990年,没有提到任何其他版本。我想我现在明白了。注意,不要把exp看作CL函数exp。这可能是一个错误的伪符号选择。顺便说一句,我是在第二版的塔尼莫托。我不认为这真的是一个可怕的选择,但有一些潜在的混乱,肯定。在公式的符号表示和提供数学函数的编程语言中肯定会有一些重叠。是的,现在知道了。但我想我们在看不同版本的《塔尼莫托》。页码不匹配。我,第二版。@147pm是的,我更新了我的答案,提到了第一版,我认为它是,因为它是1990年,没有提到任何其他版本。