summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-11-13 15:55:39 +0000
committerRich Hickey <richhickey@gmail.com>2008-11-13 15:55:39 +0000
commit0a18d93657e38c691a671fb37e251728f77ee331 (patch)
treea341c765667d48e16db1cbc65b29a9fd195c6823
parente36121e55e2c09beeaa90ca3f2fc822f24c2adc8 (diff)
made (keyword :akeyword) and (symbol 'asymbol) == identity
-rw-r--r--src/clj/clojure/core.clj20
1 files changed, 11 insertions, 9 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
index 1e15831d..c0174c05 100644
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -321,15 +321,24 @@
(str sb)))
(new StringBuilder #^String (str x)) ys)))
+
+(defn symbol?
+ "Return true if x is a Symbol"
+ [x] (instance? clojure.lang.Symbol x))
+
+(defn keyword?
+ "Return true if x is a Keyword"
+ [x] (instance? clojure.lang.Keyword x))
+
(defn symbol
"Returns a Symbol with the given namespace and name."
- ([name] (. clojure.lang.Symbol (intern name)))
+ ([name] (if (symbol? name) name (. clojure.lang.Symbol (intern name))))
([ns name] (. clojure.lang.Symbol (intern ns name))))
(defn keyword
"Returns a Keyword with the given namespace and name. Do not use :
in the keyword strings, it will be added automatically."
- ([name] (. clojure.lang.Keyword (intern nil name)))
+ ([name] (if (keyword? name) name (. clojure.lang.Keyword (intern nil name))))
([ns name] (. clojure.lang.Keyword (intern ns name))))
(defn gensym
@@ -2177,13 +2186,6 @@
(recur (dec n) (rest xs))
xs)))
-(defn symbol?
- "Return true if x is a Symbol"
- [x] (instance? clojure.lang.Symbol x))
-
-(defn keyword?
- "Return true if x is a Keyword"
- [x] (instance? clojure.lang.Keyword x))
;redefine let and loop with destructuring
(defn destructure [bindings]