请在 2024 年 Clojure 调查问卷! 中分享您的想法。

欢迎!请参阅 关于 页面以了解更多关于这个网站的信息。

+9
语法和读取器

然而
- 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”函数存在的情况下, amidst API 中的其他许多内容(其中确实可以很好的搭配在一起),人们总是认为自己在做错事;

并且
- 修改“读取”函数以使它们自己的 Pushback 功能被认为是可行的并被否决了(链接:2);

因此建议添加 clojure.java.io/pushback_reader,以便返回可以由 clojure.core/read 和 clojure.edn/read 消费的东西。

(链接:1)该问题已在 Google Groups 上讨论

(2014年,“clojure.edn 不接受 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 年的消息线程

5 答案

0

评论者:davidrupp

附带的补丁 drupp-clj-1611.patch 实现了请求数的 clojure.java.io/pushback_reader。

0

评论者:davidrupp

请注意,您始终可以导入 java.io.PushbackReader 并执行类似于 (PushbackReader. (reader my-thing)) 的操作;补丁实际上就是做了这件事。

0

评论人:pbwolf

clojure.java.io/reader 是幂等的,而2015年1月10日的补丁将现有的 PushbackReader 两次重新包装:首先是一个新的 BufferedReader,然后是一个新的 PushbackReader。

只留一个 PushbackReader 在那里将更符合 clojure.java.io 的模式。

它还需要一个文档字符串。如果 pushback-reader 是幂等的,文档字符串的开头可以与 clojure.java.io/reader 的一致,例如:尝试将参数强制转换为 java.io.PushbackReader;如果那样失败,(等等)。

0

评论者:davidrupp

添加 drupp-clj-1611-2.patch 来解决之前的评论。

0
参考:https://clojure.atlassian.net/browse/CLJ-1611(由 alex+import 报告)
...