Lisp-“[函数名称] 不是数字”

Lisp- "[Function name] Is not a Number"

所以我有这个简单的表达式来计算和列出二次方程的两个根:

(defun QUADRATIC (A B C) (list (/  (+  (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A)) (/  (- (- B) (sqrt(- (* B B) - (* 4 A C)))) (* 2 A))))

但是当我在 CLISP 中使用任意三个数字作为参数对其进行评估时,比如说

(quadratic 2 2 2)

我收到以下错误:(quadratic 2 2 2) is not a number

我确定有一个简单的修复方法,但我想不出来!

您的定义中存在语法错误(使用正确格式化代码的编辑器有助于查找此类错误)。

正确的定义是:

 (defun quadratic (A B C) 
    (list (/  (+ (- B) (sqrt(- (* B B) (* 4 A C)))) 
              (* 2 A)) 
          (/  (- (- B) (sqrt(- (* B B) (* 4 A C)))) 
              (* 2 A))))

当您在 sqrt 调用中有一个额外的 - 时:(sqrt(- (* B B) - (* 4 A C)))) (* 2 A))(第二个 -)。

出现特定错误消息的原因是 - used not in function position 是一个引用当前形式的特殊变量(参见 specification)。