2

我在 Common Lisp 中使用属性列表来表示带有一些附加信息的二叉树。我希望能够使用单个函数任意深入挖掘树,并相应地对其进行修改。

在 Clojure(这是我使用的另一个 Lisp)中,存在被调用的函数get-in并且assoc-in可以完全做到这一点,但我在 Common Lisp 中没有发现任何类似的东西。它们真的存在吗,还是我必须写它们?

4

1 回答 1

2

我还没有看到将嵌套 plist 用于这种数据结构;这可能有点不寻常。我宁愿期望一个结构(用 定义defstruct)或类(用 定义defclass)表示节点。对于(不太稀疏的)二叉树的另一种情况是实现为数组,其中根节点位于索引 0 处,每个节点的子节点位于 (2 · i + 1) 和 (2 · i + 2) 处。

如果您坚持使用 plist,您将不得不嵌套getfs 并为嵌套的 s 编写setf扩展器getf

于 2014-05-15T07:29:13.970 回答