Пропадают локальные переменные функции после первого запуска функции - Lisp

Узнай цену своей работы

Формулировка задачи:

Я написал код для расчёта электрического кольца. Я постепенно упрощаю схему параллельными и последовательными операциями. Вот мой код:
Листинг программы
  1. ( defun pos ( R1 R2 ) (+ R1 R2 ) )
  2. ( defun par (R1 R2 ) ( / ( * R1 R2 ) ( + R1 R2 ) ) )
  3. ( defun sch1 (R1 R2 R3 R4 R5 R6 R7)
  4. ( defvar R56 ( par R5 R6 ) )
  5. ( defvar R24 ( pos R2 R4 ) )
  6. ( defvar R2456 ( pos R24 R56 ) )
  7. ( defvar R37 ( pos R3 R7 ) )
  8. ( defvar R234567 ( par R2456 R37 ) )
  9. ( defvar R1234567 ( pos R1 R234567 ) )
  10. R1234567 )
Проблема состоит в следующем: я запускаю первый раз функцию sch1 и она отрабатывает, а после второго запуска функция выдаёт ошибку. Вот листинг:
Листинг программы
  1. ( sch1 10 10 10 10 10 10 10 )
  2. ==> 21.1111111111111
  3. ( sch1 10 10 10 10 10 10 10 )
  4. Assoc: Символ R24 не имеет значения (не связан).
  5. ==> ERRSTATE
Возможно я неправильно оглашаю локальные переменные?

Решение задачи: «Пропадают локальные переменные функции после первого запуска функции»

textual
Листинг программы
  1. (defun par (r1 r2)
  2.   (/ (* r1 r2) (+ r1 r2)))
  3.  
  4. (defun sch1 (r1 r2 r3 r4 r5 r6 r7)
  5.   (float (+ r1 (par (+ r2 r4 (par r5 r6))
  6.                     (+ r3 r7)))))
  7.  
  8. > (sch1 10 10 10 10 10 10 10)
  9. 21.11111

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы