diff options
author | Rich Hickey <richhickey@gmail.com> | 2007-09-19 21:19:19 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2007-09-19 21:19:19 +0000 |
commit | f745f2189d239572e3247d23384b0d2bc9138c8d (patch) | |
tree | d955403ac947dd4391461aa8af3ffaebba9be25a /src | |
parent | 7aac33d1447ccea5ef6a70318ea67085af994a68 (diff) |
refactoring
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.clj | 3 | ||||
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/PersistentVector.java | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 2 |
4 files changed, 7 insertions, 4 deletions
diff --git a/src/boot.clj b/src/boot.clj index 3e82cea8..c711e27a 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -209,6 +209,9 @@ (defn pop [list] (. RT (pop list))) +(defn nth [coll index] + (. RT (nth coll index))) + ;;map stuff (defn contains [coll key] diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index bebdede8..a9552adc 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -515,7 +515,7 @@ static abstract class HostExpr implements Expr{ m = byteValueMethod; else if(paramType == short.class) m = shortValueMethod; - gen.invokeStatic(NUMBER_TYPE, m); + gen.invokeVirtual(NUMBER_TYPE, m); } } else diff --git a/src/jvm/clojure/lang/PersistentVector.java b/src/jvm/clojure/lang/PersistentVector.java index 0f1c9d0e..d45ef2dc 100644 --- a/src/jvm/clojure/lang/PersistentVector.java +++ b/src/jvm/clojure/lang/PersistentVector.java @@ -80,9 +80,9 @@ public Object nth(int i){ public PersistentVector assocN(int i, Object val){ if(i >= 0 && i < cnt) - { return new PersistentVector(meta(), cnt, shift, doAssoc(shift, root, i, val)); - } + if(i == cnt) + return cons(val); throw new IndexOutOfBoundsException(); } diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 6186e973..ae46b0fb 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -320,7 +320,7 @@ static public Object dissoc(Object key, Object coll){ return ((IPersistentMap) coll).without(key); } -static public Object nth(int n, Object coll){ +static public Object nth(Object coll, int n){ if(coll == null) return null; else if(coll instanceof IPersistentVector) |