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)) (второй -).

Причина конкретного сообщения об ошибке заключается в том, что - не используемая в позиции функции используется специальная переменная, которая ссылается на текущую форму (см. спецификацию).

Другие вопросы по тегам