欢迎!请参阅关于页面以了解有关此功能的更多信息。
`(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: gensyms) (...)),因此它也接受类似 (fn (link: x) x) 的表达式。请问 ppint 应该将使用 fn 强调的表达式格式化打印,还是仅仅是忽略它?