키워드의 임시 계층 구조를 만드는 Clojure의 시스템은 언어 사용에 많은 시간을 소비 한 대부분의 사람들에게 친숙합니다. 예를 들어, 대부분의 데모와 언어의 프리젠 테이션은클로저에 독립 계층을 사용해야하는시기와 방법은 무엇입니까?
(derive ::child ::parent)
등의 사례를 포함하고이이 멀티 방법 파견에 사용할 수있는 방법을 보여로 이동.
내가 본 모든 슬라이드와 프레젠테이션에서 전역 계층 구조를 사용합니다. 그러나 h가 (make-hierarchy)에 의해 생성되는 (h :: child :: parent 파생)을 사용하여 독립적 인 계층 구조에 키워드 관계를 넣는 것이 가능합니다. 따라서 다음과 같은 몇 가지 질문이 있습니다.
- 이것이 유용하거나 필요한시기에 대한 지침이 있습니까?
- 계층 구조를 조작하는 데 필요한 함수가 있습니까?
병합 특히 유용합니다, 그래서 나는이 작업을 수행 :
(defn merge-h [& hierarchies]
(apply merge-with (cons #(merge-with clojure.set/union %1 %2) hierarchies))
그러나 그러한 기능이 이미 어딘가에 존재하는 경우 궁금 해서요.
EDIT :이 용어가이 동물을 더 잘 설명하기 때문에 "맞춤"계층 구조가 "독립적 인"계층 구조로 변경되었습니다. 또한, 나는 약간의 조사를했고, 나 자신의 대답을 아래에 포함시켰다. 더 많은 의견을 환영합니다.
스포츠 예제에 대한 한 가지 우려 사항은 다음과 같습니다. (isa? hockey-hierarchy : jordan : gretzky) => true. 즉, 이들은 유형 계층 구조입니다. 그러나 요점은 유효합니다. 동일한 단어가 여러 도메인의 서로 다른 유형 관계에서 서로 다른 유형이 될 수 있으므로 로컬 계층 구조가 필요합니다. 사실, 나는 우리가 세계적인 계급을 망쳐 놓는 것이 허락된다는 것에 놀랐다. – kennytilton