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)。
所以我有这个简单的表达式来计算和列出二次方程的两个根:
(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)。