Make unquote-splicing available, similar to unquote

diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj
--- a/src/clj/clojure/core.clj
+++ b/src/clj/clojure/core.clj
@@ -9,6 +9,7 @@
 (ns clojure.core)
 
 (def unquote)
+(def unquote-splicing)
 
 (def
  #^{:arglists '([& items])
diff --git a/src/jvm/clojure/lang/LispReader.java b/src/jvm/clojure/lang/LispReader.java
--- a/src/jvm/clojure/lang/LispReader.java
+++ b/src/jvm/clojure/lang/LispReader.java
@@ -26,7 +26,7 @@
 static final Symbol THE_VAR = Symbol.create("var");
 //static Symbol SYNTAX_QUOTE = Symbol.create(null, "syntax-quote");
 static Symbol UNQUOTE = Symbol.create("clojure.core", "unquote");
-//static Symbol UNQUOTE_SPLICING = Symbol.create(null, "unquote-splicing");
+static Symbol UNQUOTE_SPLICING = Symbol.create("clojure.core", "unquote-splicing");
 static Symbol CONCAT = Symbol.create("clojure.core", "concat");
 static Symbol LIST = Symbol.create("clojure.core", "list");
 static Symbol APPLY = Symbol.create("clojure.core", "apply");
@@ -695,7 +695,7 @@
 			}
 		else if(isUnquote(form))
 			return RT.second(form);
-		else if(form instanceof UnquoteSplicing)
+		else if(isUnquoteSplicing(form))
 			throw new IllegalStateException("splice not in list");
 		else if(form instanceof IPersistentCollection)
 			{
@@ -745,8 +745,8 @@
 			Object item = seq.first();
 			if(isUnquote(item))
 				ret = ret.cons(RT.list(LIST, RT.second(item)));
-			else if(item instanceof UnquoteSplicing)
-				ret = ret.cons(((UnquoteSplicing) item).o);
+			else if(isUnquoteSplicing(item))
+				ret = ret.cons(RT.second(item));
 			else
 				ret = ret.cons(RT.list(LIST, syntaxQuote(item)));
 			}
@@ -766,13 +766,8 @@
 
 }
 
-
-static class UnquoteSplicing{
-	final Object o;
-
-	public UnquoteSplicing(Object o){
-		this.o = o;
-	}
+static boolean isUnquoteSplicing(Object form){
+	return form instanceof ISeq && RT.first(form).equals(UNQUOTE_SPLICING);
 }
 
 static boolean isUnquote(Object form){
@@ -788,7 +783,7 @@
 		if(ch == '@')
 			{
 			Object o = read(r, true, null, true);
-			return new UnquoteSplicing(o);
+			return RT.list(UNQUOTE_SPLICING, o);
 			}
 		else
 			{
