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

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

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

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

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

textual
Листинг программы
(defun par (r1 r2)
  (/ (* r1 r2) (+ r1 r2)))
 
(defun sch1 (r1 r2 r3 r4 r5 r6 r7)
  (float (+ r1 (par (+ r2 r4 (par r5 r6))
                    (+ r3 r7)))))
 
> (sch1 10 10 10 10 10 10 10)
21.11111

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


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

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

6   голосов , оценка 3.833 из 5
Похожие ответы