commonLISP 中的 LET 和 SETF
LET and SETF in commonLISP
老师告诉我的,应该用let声明局部变量,用setf声明全局变量。
我试过运行下面的代码:
(let (state-list (problem-initial-state problem))
(print state-list))
我得到 NIL。
但是,当我尝试以下操作时:
(setf state-list (problem-initial-state problem))
(print final-list)
我得到了想要的值(problem-initial-state problem中的值)。
这是为什么?
PS:我为这些初学者问题道歉,我很难进入 LISP,来自 C 背景。
您的 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
。
老师告诉我的,应该用let声明局部变量,用setf声明全局变量。
我试过运行下面的代码:
(let (state-list (problem-initial-state problem))
(print state-list))
我得到 NIL。
但是,当我尝试以下操作时:
(setf state-list (problem-initial-state problem))
(print final-list)
我得到了想要的值(problem-initial-state problem中的值)。
这是为什么?
PS:我为这些初学者问题道歉,我很难进入 LISP,来自 C 背景。
您的 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
。