欢迎!请查看关于页面了解此网站的工作方式更多信息。
`(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) 的情况下,它传入了一个符号。
评论由:hypirion 提出
我认为主要的问题在于 fn 的未记录功能。 (fn (link: x) x) 是一个语义上正常工作的函数,但 (fn (link: x) x) 会扩展为 (fn ((link: x) x))。匿名函数字面量扩展为 (fn (link: gensyms) (...)),因此它也接受 (fn (link: x) x) 这样的表达式。pprint 是否应该将使用了 fn 的表达式格式化打印出来,或者它“仅仅”忽略它?