Skip to content

Instantly share code, notes, and snippets.

@KSCGroup
Created March 2, 2012 06:28
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save KSCGroup/1956218 to your computer and use it in GitHub Desktop.
Save KSCGroup/1956218 to your computer and use it in GitHub Desktop.
patch to clojure.core/keyword to allow different types for [ns name] interface, on par with [name]
(in-ns 'clojure.core)
(defn keyword-fs
"Returns a Keyword with the given namespace and name. Do not use :
in the keyword strings, it will be added automatically."
{:tag clojure.lang.Keyword
:added "1.0"
:static true}
([name] (cond (keyword? name) name
(symbol? name) (clojure.lang.Keyword/intern ^clojure.lang.Symbol name)
(string? name) (clojure.lang.Keyword/intern ^String name)))
([ns name]
(let [ns-str (cond (instance? clojure.lang.Namespace ns) (str ns)
(symbol? ns) (str ns)
(keyword? ns) (str (when-let [n (namespace ns)] (str n "/"))
(clojure.core/name ns))
true ns)
name-str (cond (symbol? name) (str name)
(keyword? name) (str (when-let [n (namespace name)] (str n "/"))
(clojure.core/name name))
true name)]
(clojure.lang.Keyword/intern ^String ns-str ^String name-str))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment