对于函数的 print-method
实现,是为了产生有效的 edn
语法吗?在有些情况下,它并没有做到。
user> (require '[org.httpkit.server :as http])
user> (def s (http/run-server (fn [req] {:status 200}) {}))
user> (prn s)
#function[clojure.lang.AFunction/1]
符号名称不能以数字开头,因此 clojure.lang.AFunction/1
在读取时会引发解析错误
user> (clojure.edn/read-string (prn-str s))
Execution error at user/eval7394 (REPL:68).
Invalid token: clojure.lang.AFunction/1
这是预期的行为吗?如果是这样,打印和重新读取可能包含函数的数据结构可能会失败。