whereas
- clojure.core/read 和 clojure.edn/read 需要一个 PushbackReader;
- clojure.java.io/reader 生成一个 BufferedReader,这是不兼容的;
- 这种风险已经让众人困惑了多年(链接:1);
- clojure.java.io 实际上只是一个简单的糖果(并且增加一点不会造成损害);
- clojure.java.io 的存在本身就表明其适用性和适用性(其中由于缺乏可读取的 pushback-reader 而不足);
i.e.,在没有 clojure.java.io 的情况下,似乎“不必”使用 clojure.edn,但在 clojure.java.io 和其“reader”函数存在的情况下,在 API 中看似很多部分都是可以搭配的,仍让人觉得做错了;
and
- 将“read”函数修订为使用自己的 Pushback 被考虑过,但被拒绝(链接:2);
因此建议添加 clojure.java.io/pushback-reader,使其返回 clojure.core/read 和 clojure.edn/read 可以消耗的内容。
(链接:1) 该问题在 Google Groups 上进行了讨论
(2014,"clojure.edn won't accept clojure.java.io/reader?") https://groups.google.com/forum/#!topic/clojure/3HSoA12v5nc
以及一个早期线程的引用
(2009,"从阅读器读取...") https://groups.google.com/forum/#!topic/clojure/_tuypjr2M_A
(链接:2) CLJ-82 和 2009 消息线程