2016-11-09 2 views
0

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

Я попытался запустить следующий код:

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

и я получаю NIL.

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

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

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

Почему?

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

ответ

2

У вас не хватает пару скобок в ваших 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.

+0

О, я чувствую себя неловко, спасибо вам большое. –

 Смежные вопросы

  • Нет связанных вопросов^_^