Я написал несколько макросов обертки вокруг одной библиотеки JavaScript (PRNG). Тогда я хотел создать функциональность, предоставляемую кроссплатформенностью макросов. (т. Е. Я хочу иметь другую реализацию этих макросов для JVM).Что такое правильный способ создания кроссплатформенных макросов в Clojure (Script)?
Каков правильный способ сделать это в Clojure?
Или у меня есть только один макрос, который во время компиляции обнаруживает, используется ли он для JVM или JS и возвращает соответствующий код?
Я думаю, что условия для чтения и 'cljc' - это то, что вам нужно. https://clojure.org/guides/reader_conditionals. Вы можете определить различные реализации макросов для разных целевых платформ, а компилятор будет читать правильную версию в зависимости от того, какая цель используется при использовании. – leetwinski
Нет, условия чтения обычно не подходят для кросс-платформенных, поскольку макросы ClojureScript написаны на Clojure, поэтому для индикатора платформы будет установлено значение: clj, а не: cljs. Обратите внимание, что макросы действительно связаны с кодом ПИСЬМА, а не с чтением (где удобны условия чтения). –