ok, mit Hilfe dieses Kerl, Michael Kohl akzeptieren, fand ich heraus, wie zu einem Namespace in einer Variablen gehalten wechseln (read here for more details)
so, hier gehen wir:
user=> (def working-namespace (create-ns 'my-namespace))
#'user/working-namespace
user=> (in-ns (symbol (str working-namespace)))
#<Namespace my-namespace>
my-namespace=>
;; notice how it switched to "my-namespace"
;; now if i were to put some other namespace in that variable...
my-namespace=> (ns user)
nil
user=> (def working-namespace (create-ns 'other-namespace))
#'user/working-namespace
;; and switch again, i would get the new namespace
user=> (in-ns (symbol (str working-namespace)))
#<Namespace other-namespace>
other-namespace=> ; tadaa!
obwohl ich glaube nicht, dass es idiomatisch clojure ist Variablen neu zuordnen, können Sie diese in eine Funktion bauen könnte, die den Halter var für Namespace als Parameter bekommt
jetzt den Wert eines var innerhalb und außerhalb dieses Namensraum
user=> (intern working-namespace 'some-var "my value")
#'other-namespace/some-var
user=> (var-get (intern working-namespace 'some-var))
"my value"
Aber etwas auf der Linie (defmacro defns-name [name] '(def ~ name (ns-name * ns *))) und dann call (defns-name namespace-name) würde funktionieren. –
Abschriften aßen die Sterne um 'ns' in Nicolas Kommentar oben: sollte lauten:' (defmacro defns-name [name] \ '(def ~ Name (ns-name * ns *)))'. –