Wie kann ich Funktionen zur Laufzeit in Clojure serialisieren?

Gibt es eine Möglichkeit, Funktionen zur Laufzeit in Clojure zu serialisieren? Ich möchte in der Lage sein, zustandslose (aber nicht reine) Funktionen in einem serialisierten Format über die Leitung zu senden (wahrscheinlich edn, aber ich bin für alles offen).

Beispielsweise..

enn ich lauprn-str Auf einer Funktion bekomme ich nicht das, was ich erwartet / gewollt habe.

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=> 

ch hätte so etwas gewollt / erwartet:

user=> (prn-str fn2)
"(fn [x] (* x 2))\n"

oder vielleicht

user=> (prn-str fn2)
"(defn fn2 [x] (* x 2))\n"

Antworten auf die Frage(12)

Ihre Antwort auf die Frage