请在2024 Clojure调查中分享您的想法!

欢迎!请参阅关于页面以获取更多关于此功能的信息。

+2
Clojure
重标记

Q1: 由于Clojure和ClojureScript在java.net.URI和goog.Uri上实现了clojure.core/uri?,为什么不提供内置的#uri edn扩展?

以下是一个关于如何操作以及测试的Gist: 如何在Clojure/Script中安装#uri读取扩展

尽管有以下说明“没有命名空间限定符的Reader标记保留给Clojure”,但我觉得这是安全的,因为如果Clojure最终提供了这个功能,那么:(1) 这个实现会被取代并应该被移除;(2) 这个实现旨在提供core会提供的精确实现。

然而,Borkdude指出了以下问题

  • Borkdude 问题在于,如果你有人在类路径上有 overrides data_readers.cljc 的东西,你无法轻松撤销内置标记的覆盖
  • Dustin Getz 哦,所以如果这个扩展最终作为某个库的传递依赖而捆绑在一起
  • Borkdude 是的。所以即使你想移除它,如你所知,软件并不能那么容易就被杀掉。

Q2: 因此我请求将来考虑将其内置于核心中

Q3: 这是不是正确的实现?(我的意图是一劳永逸地记录下来,所以我感谢反馈/评论。)

Q4: transit-clj & transit-cljs拒绝读取java.net.URI和goog.Uri(与clojure.core/uri?谓词不一致),而是读取为cct.Uri。为什么?

1 答案

+2
by
selected by
 
最佳回答

Q1 - 请勿在实现时使用未经限定的数据读取器。这样广泛的扩展会使我们很难将其添加到核心,并可能导致许多问题。这就是关键所在。

Q2 - 添加了一个 Jira https://clojure.atlassian.net/browse/CLJ-2731

Q3 - 也不知道,愿意审查针对 Clojure 的专用补丁

Q4 - 这里有旧的历史,我不知道或记得全部内容,某些决策可能不再相关。我知道 transit 存储库中关于这个的有些问题

...