Непонятная ошибка в моей программе производной на 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]
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д