LET和SETF in commonLISP

时间:2016-11-09 17:40:21

标签: let clisp setf

我的老师告诉我,我应该使用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背景。

1 个答案:

答案 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