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"