2016-11-09 15 views
0

從我的老師告訴我,我應該使用let聲明局部變量和setf聲明全局變量。LET和SETF的共同點LISP

我試圖運行下面的代碼:

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

,我也得到NIL。

但是,當我嘗試以下方法:

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

我得到所需的值(在問題的初始狀態問題的值)。

這是爲什麼? PS:我對這些begginer問題表示歉意,我很難進入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-listnilproblem-initial-stateproblem

+0

哦,我感到尷尬,非常感謝。 –