Lisp defstruct实例化是否评估其&;关键论点?
我试图将defstructs实例嵌套为另一个defstruct中的一些&key参数,如下代码所示。出于某种原因,要插入外部defstruct的变量没有被绑定到它们的值替换(这是我所期望的)。如有任何解释和/或建议,将不胜感激Lisp defstruct实例化是否评估其&;关键论点?,lisp,common-lisp,Lisp,Common Lisp,我试图将defstructs实例嵌套为另一个defstruct中的一些&key参数,如下代码所示。出于某种原因,要插入外部defstruct的变量没有被绑定到它们的值替换(这是我所期望的)。如有任何解释和/或建议,将不胜感激 (defstruct (compound (:conc-name nil)) op args) (defstruct (var (:conc-name nil)) name) (let* ((x (make-var :name 'x)) (y (make-v
(defstruct (compound (:conc-name nil)) op args)
(defstruct (var (:conc-name nil)) name)
(let* ((x (make-var :name 'x))
(y (make-var :name 'y))
(my (make-compound :op 'Mother :args y))
(s1 (make-compound :op 'knows :args '(y my)))
(s2 (make-compound :op 'knows :args '('John x))))
s1)
=> #S(COMPOUND :OP KNOWS :ARGS (Y MY))
”(y my)
是一个文本列表,包含两个符号-y
和my
(list y my)
将创建两个值的列表,第一个是变量y
的值,第二个是变量my
的值。“('John x)
”也是一样,它是一个包含两个元素的文本列表-一个列表(引用John)
和一个符号x”(y my)
是一个包含两个符号的文本列表-y
和my
(list y my)
将创建两个值的列表,第一个是变量y
的值,第二个是变量my
的值。“('John x)
”也是一样-它是一个包含两个元素的文本列表-一个列表(引用John)
和一个符号x
,阅读一些更基本的Lisp介绍书可能会有所帮助。就像Lisp之地,或者Touretzky的温柔介绍。这些解释了基本的求值规则。阅读一些更基本的Lisp入门书可能会有所帮助。就像Lisp之地,或者Touretzky的温柔介绍。这些解释了基本的评估规则。啊!我认为'()和(列表)符号是等价的。谢谢你的澄清!啊!!我认为'()和(列表)符号是等价的。谢谢你的澄清!