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

欢迎!请参阅 关于页面 获取有关此工作的更多信息。

+3
语法和读取器
重标记

*default-data-reader-fn* 设置为 tagged-literal(如https://clojure.org/reference/reader#_default_data_reader_function中建议的)在 REPL 中如下所示

user=> (set! *default-data-reader-fn* tagged-literal)

正如广告中一样,REPL 现在可以读取未知标记字面量,例如

user=> #foo 123
#foo 123

然而,当嵌入到表达式时,它失败了

user=> (prn #foo 123)
Syntax error compiling fn* at (REPL:1:1).
Can't embed object in code, maybe print-dup not defined: clojure.lang.TaggedLiteral@34b5d34f

错误信息中的提示确实有效,因此当我提供

user=> (defmethod print-dup clojure.lang.TaggedLiteral [tl w] (print-method tl w))

REPL 现在可以成功读取和评估前面的表达式

user=> (prn #foo 123)
#foo 123
nil

是否应该默认提供 clojure.lang.TaggedLiteralprint-dup 实现?

1 个答案

+2

选定
 
最佳答案

是的,应该,已在 https://clojure.atlassian.net/browse/CLJ-2801 中记录

...