2016-11-09 3 views
0

私の先生から教えてくれたことから、letを使ってローカル変数を宣言し、setfでグローバル変数を宣言する必要があります。commonLISPの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の背景から来ている。

答えて

2

あなたlet形で括弧のカップルが欠落しています

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

(1 2)を印刷します。

フォーム

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

state-listproblemからnilにしてproblem-initial-stateバインドします。

+0

ああ、私は恥ずかしいと感じる、ありがとう。 –