2024 Clojure 状态调查!中分享您的想法。

欢迎!请查看关于页面了解此网站的工作方式更多信息。

0
打印

`
(with-out-str
(with-pprint-dispatch code-dispatch

                    (pp/pprint (read-string "(fn* [x] x)"))))

`

中断的原因是因为这里的格式字符串: https://github.com/clojure/clojure/blob/master/src/clj/clojure/pprint/dispatch.clj#L378 预期的是一个序列。在 (fn* (link: x) x) 的情况下,它传入了一个符号。

2 个答案

0

评论由:hypirion 提出

我认为主要的问题在于 fn 的未记录功能。 (fn (link: x) x) 是一个语义上正常工作的函数,但 (fn (link: x) x) 会扩展为 (fn ((link: x) x))。匿名函数字面量扩展为 (fn (link: gensyms) (...)),因此它也接受 (fn (link: x) x) 这样的表达式。pprint 是否应该将使用了 fn 的表达式格式化打印出来,或者它“仅仅”忽略它?

0
...