鉴于
- clojure.core/read 和 clojure.edn/read 需要 PushbackReader;
- clojure.java.io/reader 生成 BufferedReader,这不兼容;
- 这种风险已经困扰了人们多年(链接:1);
- clojure.java.io 本身就类似于糖(并且不会因添加更多而损坏);
- clojure.java.io 的存在本身就表明了其适用性和使用价值(其中由于缺少兼容的读取 pushback_reader 而不足);
也就是说,在没有 clojure.java.io 的情况下,使用 clojure.edn 并不“困难”,但在存在 clojure.java.io 及其“reader”函数的情况下,在其 API 中许多其他可配合的函数之中,一直觉得自己在做错事;
并且
- 将“读取”函数修正为使它们自己的 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 的消息线程