Непонятная ошибка в моей программе производной на Common Lisp
Формулировка задачи:
Мое задание
Написать программу которая берет производную от одной переменной
То что я уже сделала:
Помогите разобраться, объясните что не так
(defun diff( const x)
(cond (( atom const)
(if (eq const x) 1 ;если просто x возвращаем 1
0))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Данный кусок кода не работает и я не понимаю почему
; (нужно продифференцировать x возведенный в степень)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Если следующий символ это ^
(( eq (first const) '^)
(list '+ ;то пишем +
( list '* (third const) ; третий элемент это число в степень которого мы возводим (умножим на него)
(list'^ ;выводим ^
(second const) ;выводим x
( (- third 1) third ))))) ; выводим третий элемент - 1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Тут он заканчивается
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Если следующий символ это +
(( eq (first const) '+)
(list '+ ;то пишем +
(diff0 (second const) x) ; вызываем снова ту же функцию второго символа от x
(diff0 (third const) x))) ; вызываем снова ту же функцию третьего символа строки от x (если + считать 1)
; Если следующий символ это *
(( eq (first const) '*)
(list '+ ;то пишем +
(list '* ; затем *
(diff0 (second const) x) ; вызываем снова ту же функцию второго символа от x
(third const)) ;выводим x
(list '* ; затем еще *
(diff0 (third const) x) ; вызываем снова ту же функцию третьего символа строки от x
(second const)))) ; второй символ
(t const))); все другое выводим как естьРешение задачи: «Непонятная ошибка в моей программе производной на Common Lisp»
textual
Листинг программы
Form: ((- THIRD 1) THIRD) Compile-time error: illegal function call [Condition of type SB-INT:COMPILED-PROGRAM-ERROR]