【问题标题】:LET and SETF in commonLISP通用 LISP 中的 LET 和 SET
【发布时间】:2016-11-09 17:40:20
【问题描述】:

按照老师的说法,我应该用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 背景。

【问题讨论】:

    标签: let clisp setf


    【解决方案1】:

    您的let 表单中缺少几个括号:

    (let ((a 1)
          (b 2))
      (print (list a b)))
    

    将打印(1 2)

    你的表格

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

    state-list 绑定到nilproblem-initial-stateproblem

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-07
      • 2010-11-14
      • 2013-07-09
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 2012-09-12
      • 2023-04-09
      相关资源
      最近更新 更多