Clojure用于创建关键字临时层次结构的系统对于花费一些时间使用该语言的大多数人来说都很熟悉.例如,该语言的大多数演示和演示包括诸如的示例
(derive ::child ::parent)
Run Code Online (Sandbox Code Playgroud)
然后他们继续展示如何将其用于多方法调度.
在我看过的所有幻灯片和演示文稿中,他们使用全局层次结构.但是可以通过使用(derived h :: child :: parent)将关键字关系放在独立的层次结构中,其中h由(make-hierarchy)创建.因此,有些问题:
合并特别有用,所以我这样做:
(defn merge-h [& hierarchies]
(apply merge-with (cons #(merge-with clojure.set/union %1 %2) hierarchies))
Run Code Online (Sandbox Code Playgroud)
但我想知道这些功能是否已存在于某处.
编辑:将"自定义"层次结构更改为"独立"层次结构,因为该术语更好地描述了这种动物.此外,我做了一些研究,并在下面包括我自己的答案.欢迎进一步评论.