clojure - 类似于Clojure对plists的get-in和assoc-in的操作

标签 clojure common-lisp property-list

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

在 Clojure(这是我使用的另一个 Lisp)中,存在名为 get-inassoc-in 的函数,它们可以做到这一点,但我还没有'在 Common Lisp 中没有发现类似的东西。它们真的存在吗,还是我必须写它们?

最佳答案

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

如果您坚持使用 plist,则必须嵌套 getf 并为嵌套的 getf 编写一个 setf 扩展器。

关于clojure - 类似于Clojure对plists的get-in和assoc-in的操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23668363/

相关文章:

Clojure 序列和集合

clojure - 在单独的 Clojure 命名空间中调用函数

clojure - Clojure 中的上下文评估

lisp - 为什么Common Lisp中不存在原始的 `call-with-current-continuations`

lisp - Allegro CL Free Express Edition 9.0 中函数定义应该写在哪里?

objective-c - 从 plist 文件恢复 NSDictionary 中的 BOOL

xcode - 将图像路径存储在plist中然后检索以在屏幕上显示

clojure - 类型删除如何帮助 Clojure 存在?

scheme - 意外的数据持久性

macos - 使用默认值从 Mac 上的命令行修改 Plist