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。为什么?