Непонятная ошибка в моей программе производной на 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]

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4 из 5