2016-11-09 1 views
0

D'après ce que mon professeur m'a dit, je devrais utiliser let pour déclarer les variables locales et setf pour déclarer les variables globales.LET et SETF en communLISP

J'ai essayé exécutant le code suivant:

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

et je reçois NIL.

Cependant, quand je les opérations suivantes:

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

Je reçois la valeur souhaitée (la valeur dans le problème d'état de problème initial).

Pourquoi est-ce? PS: Je m'excuse pour ces questions de débutant, j'ai du mal à entrer dans LISP, venant d'un arrière-plan C.

Répondre

2

Il vous manque quelques parens dans vos let formes:

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

imprimera (1 2).

Votre formulaire

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

se fixe state-list-nil et problem-initial-state-problem.

+0

Oh, je suis gêné, merci beaucoup. –