Lisp- "[Имя функции] не является числом"
Итак, у меня есть это простое выражение для оценки и перечисления двух корней квадратного уравнения:
(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 ответ
В вашем определении есть синтаксическая ошибка (и использование редактора, который правильно форматирует код, помогает найти ошибки такого рода).
Правильное определение:
(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))
(второй -
).
Причина конкретного сообщения об ошибке заключается в том, что -
не используемая в позиции функции используется специальная переменная, которая ссылается на текущую форму (см. спецификацию).