我的老师告诉我,我应该使用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背景。答案 0 :(得分: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
。