(defn
symbol
"Returns a Symbol with the given namespace and name."
([name]
(if
(symbol? name)
name
(let
[idx (.indexOf name "/")]
(if
(< idx 1)
(symbol nil name)
(symbol
(.substring name 0 idx)
(.substring name (inc idx) (. name -length)))))))
([ns name]
(let
[sym-str (if-not (nil? ns) (str ns "/" name) name)]
(Symbol. ns name sym-str nil nil))))