【发布时间】:2011-03-02 00:34:17
【问题描述】:
Clojure 用于创建特定关键字层次结构的系统对于大多数使用该语言的人来说都很熟悉。例如,该语言的大多数演示和演示都包含诸如
之类的示例(derive ::child ::parent)
他们继续展示如何将其用于多方法调度。
在我看过的所有幻灯片和演示文稿中,它们都使用全局层次结构。但是可以通过使用 (derive h ::child ::parent) 将关键字关系放在独立的层次结构中,其中 h 由 (make-hierarchy) 创建。因此,一些问题:
- 是否有关于何时有用或必要的指南?
- 是否有任何用于操作层次结构的函数?
合并特别有用,所以我这样做:
(defn merge-h [& hierarchies]
(apply merge-with (cons #(merge-with clojure.set/union %1 %2) hierarchies))
但我想知道这样的功能是否已经存在于某个地方。
编辑:将“自定义”层次结构更改为“独立”层次结构,因为该术语更好地描述了这种动物。另外,我做了一些研究,并在下面包含了我自己的答案。欢迎更多的cmets。
【问题讨论】: