2016-11-09 76 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

哦,我感到尴尬,非常感谢。 –