X.clojurescript와 X.clojure 네임 스페이스가 있다고 가정 해 보겠습니다. X.clojurescript의 모든 것은 Clojurescript 코드이며, X.clojure의 모든 것은 Clojure 코드입니다. 불행하게도, 내가 직접 Clojurescript에서 매크로를 정의 할 수 없습니다, 나는 Clojure의의를 정의하고Clojurescript 매크로에서 필요한 Clojurescript 코드를 어떻게 처리합니까?
(ns X.clojurescript.abc
(:require-macros [X.clojure.def :as clj]))
이 괜찮 사용하여 Clojurescript 네임 스페이스로 가져해야합니다. 그러나 매크로 (X.clojure에 정의 된)가 Clojurescript 네임 스페이스 (X.clojurescript)에 정의 된 것을 참조 할 필요가 있다면 어떻게 될까요? 문제는 다른 네임 스페이스를 해결할 때 Clojure 컴파일러가 Clojurescript 네임 스페이스 (별도의 디렉토리)를 찾지 않는다는 것입니다.
Clojurescript와 동일한 네임 스페이스와 정의가 필요한 Clojure 코드에 네임 스페이스를 생성하면이 문제를 해결할 수 있지만이 방법은 어리석은 일입니다. 예를 들어, 매크로에 X.clojurescript.abc.y가 필요한 경우 Clojure 버전의 X.clojurescript.abc에서 더미 y를 정의하는 추가 네임 스페이스를 Clojure 측에 작성합니다. 일종의 바보.
Clojurescript 쪽에서 뭔가를 참조해야하는 매크로는 어떻게 처리합니까?
clojurescript에서 필요한 모든 항목을 매개 변수로 사용하는 매크로를 만듭니다. 일부 코드를 추가 할 수 있다면 명확한 질문에 대답하는 것이 훨씬 쉬울 것입니다. – Ankur
귀하의 질문을 이해할 수 없다고 생각합니다. 매크로는 클로저 스크립트에서 평가할 코드를 * 생성 *해야합니다. 따라서 어떤 클로저 스크립트를 참조해야한다면 매크로 확장시 기호를 생성하는 것으로 충분하지 않습니까? – KIMA
'Clojurescript 쪽의 무언가를 참조하십시오 .' 매크로 확장시 또는 출력 코드에서 출력 될 내용이 필요합니까? – Ankur