Вы пытаетесь использовать Lisp настоятельно.Хотя это возможно, это может быть немного болезненно.
Чтобы сделать ваш код более функциональным, вместо создания переменных и их изменения, вы должны создать имена и привязать к ним значения.
Чтобы уточнить, let
- это специальная форма, а не функция;они используются для создания привязок имен к значениям в лексической области.
Я считаю, что вы действительно хотите сделать следующее:
(let ((n_anel (read))
(pos_anel (read)))
(... code using but not modifying n_anel and pos_anel ...))
Этот код избегает setf
.
Примечания:
Не уверен насчет скобок в Common-Lisp let
- я недавно использовал Clojure!
Такжене уверен, правильно ли вы используете read
.