LET и SETF вместе

Из того, что мне сказал мой учитель, я должен использовать let для объявления локальных переменных и setf для объявления глобальных переменных.

Я пробовал запустить следующий код:

(let (state-list (problem-initial-state problem))
  (print state-list))

и я получаю NIL.

Однако когда я пытаюсь сделать следующее:

(setf state-list (problem-initial-state problem))
  (print final-list)

Я получаю желаемое значение (значение в задаче "проблема-начальное состояние").

Это почему?

PS: Я прошу прощения за эти вопросы начинающих, мне трудно войти в LISP, исходя из фона C.


person Rui Loureiro    schedule 09.11.2016    source источник


Ответы (1)


В формах let отсутствует пара скобок:

(let ((a 1)
      (b 2))
  (print (list a b)))

напечатает (1 2).

Ваша форма

(let (state-list (problem-initial-state problem))
  (print state-list))

связывает state-list с nil и problem-initial-state с problem.

person sds    schedule 09.11.2016