gpt4 book ai didi

lisp - defstruct 实例化是否评估其 &key 参数?

转载 作者:太空宇宙 更新时间:2023-11-03 18:52:06 24 4
gpt4 key购买 nike

我正在尝试将 defstruct 的实例嵌套为另一个 defstruct 中的一些 &key 参数,如下面的代码所示。出于某种原因,要插入外部 defstruct 的变量不会被绑定(bind)到它们的值替换(这是我所期望的)。任何解释和/或建议将不胜感激。

(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) 是一个文字列表,包含两个符号 - YMY(list y my) 将创建一个包含两个值的列表,第一个是变量 Y 的值,第二个是变量 MY 的值。 '('John x) 也是如此 - 它是一个包含两个元素的文字列表 - 列表 (QUOTE JOHN) 和符号 X .

关于lisp - defstruct 实例化是否评估其 &key 参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4170829/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com