2024 年 Clojure 状态调查! 分享您的想法。

欢迎加入!请参阅 关于 页面,了解更多有关如何使用本系统的信息。

0
语法和读取器

读取器条件表达式允许读取器根据一组平台功能有条件地发出代码。

这是一个封闭集,但是目前,它是读取器实现细节的一部分。运行时代码不能访问当前的平台功能集。

当编写一个需要根据编译的代码平台有条件地发出代码的宏时,就会出现问题。由于宏总是在 Clojure 中读取,因此读取器条件本身就不起作用。

我们应该启用某种机制以在运行时检索当前平台,或者在至少在宏展开时进行检索。

例如,这应该是可能执行的操作类型

`
(defmacro mymacro []

(if (*platforms* :clj)
  `(some-clojure-thing)
  `(some-cljs-thing)))

`

2 个答案

0

签署的评论:slagyr

+1 - 非常希望看到这个功能在 1.7 版本中实现。目前我不得不使用一种丑陋的技巧。

(def ^:private ^:no-doc cljs? (boolean (find-ns ' cljs.analyzer)))

0
参考:https://clojure.atlassian.net/browse/CLJ-1750 (由 lvanderhart 报告)
...