Lisp-" [功能名称]不是数字"

时间:2017-02-26 08:39:51

标签: lisp common-lisp clisp

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

(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

我确信有一个简单的解决办法,但我无法解决这个问题!

1 个答案:

答案 0 :(得分:1)

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

正确的定义是:

 (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))(第二个-)。

特定错误消息的原因是-未在函数位置使用的是引用当前表单的特殊变量(请参阅specification)。