gpt4 book ai didi

struct - Lisp 中的嵌套结构

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

我刚开始使用 Lisp,我需要知道是否可以使用嵌套结构。这是我的尝试:

(defstruct casilla i j)
(defstruct tablero caballo reina t1 t2)

(defparameter *estado-inicial*
(make-tablero :caballo (make-casilla :i 1 :j 1)
:reina (make-casilla :i 5 :j 4)
:t1 (make-casilla :i 3 :j 5)
:t2 (make-casilla :i 4 :j 5)))

如果我必须访问字段i:

(defun es-estado-final (estado)
(and (= (caballo-casilla-i estado) 3)
(= (caballo-casilla-j estado) 1)))

是吗?似乎不是因为 caballo-casilla-i 未定义。提前致谢。

最佳答案

为了构建您的 Lisp 环境,自动为您创建访问器 tablero-caballocasilla-i。要组合它们,您需要使用 (casilla-i (tablero-caballo estado))。显然,您可以推出自己的访问器函数:

(defun caballo-casilla-i (estado)
(casilla-i (tablero-caballo estado)))

您还可以(declaim (inline caballo-casilla-i)) 不浪费额外的函数调用。

关于struct - Lisp 中的嵌套结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13331001/

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