有没有办法在 Clojure 运行时序列化函数?我希望能够以序列化格式(可能是 edn,但我对任何事情都持开放态度)通过网络发送无状态(但不是纯)函数。
例如...
如果我prn-str
在一个函数上运行,我不会得到我期望/想要的。
user=> (def fn1 (fn [x] (* x 2)))
#'user/fn1
user=> (def data {:test 1 :key "value"})
#'user/data
user=> (defn fn2 [x] (* x 2))
#'user/fn2
user=> (prn-str fn1)
"#object[user$fn1 0x28b9c6e2 \"user$fn1@28b9c6e2\"]\n"
user=> (prn-str data)
"{:test 1, :key \"value\"}\n"
user=> (prn-str fn2)
"#object[user$fn2 0x206c48f5 \"user$fn2@206c48f5\"]\n"
user=>
我本来想要/期望这样的事情:
user=> (prn-str fn2)
"(fn [x] (* x 2))\n"
或许,
user=> (prn-str fn2)
"(defn fn2 [x] (* x 2))\n"