Лисп - чтение и сохранение 2 значений из ввода - PullRequest
1 голос
/ 30 ноября 2011

Я хочу прочитать 2 значения из пользовательского ввода, используя lisp. Я хочу сохранить их в переменных, чтобы использовать их в своей программе.

Пока у меня есть текущий код:

(defun le-posicao()
  (let ((n_anel) 
        (pos_anel))
    (princ "?")
    (setf n_anel (read))
    (setf pos_anel (read))
    (when (and (integerp (n_anel)) (integerp (pos_anel)))
          n_anel pos_anel)))

Я создаю локальные переменные с помощью функции let, а затем хочу сохранить в них значения, которые я прочитал из входных данных.

Моя проблема в том, как я могу прочитать два значения из ввода и сохранить первое в одной переменной, а второе в другой? Значения должны быть в следующем формате:

? value1 value2

Может ли кто-нибудь мне помочь?

1 Ответ

1 голос
/ 30 ноября 2011

Вы пытаетесь использовать 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.

...