diff options
-rw-r--r-- | src/clj/clojure/core.clj | 4 | ||||
-rw-r--r-- | src/jvm/clojure/lang/ArrayChunk.java | 2 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 12 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/clj/clojure/core.clj b/src/clj/clojure/core.clj index 6ff4a4c7..ab80af3d 100644 --- a/src/clj/clojure/core.clj +++ b/src/clj/clojure/core.clj @@ -849,6 +849,8 @@ (defn count "Returns the number of items in the collection. (count nil) returns 0. Also works on strings, arrays, and Java Collections and Maps" + {:tag Integer + :inline (fn [x] `(. clojure.lang.RT (count ~x)))} [coll] (. clojure.lang.RT (count coll))) ;;list stuff @@ -869,6 +871,8 @@ bounds, nth throws an exception unless not-found is supplied. nth also works for strings, Java arrays, regex Matchers and Lists, and, in O(n) time, for sequences." + {:inline (fn [c i] `(. clojure.lang.RT (nth ~c ~i))) + :inline-arities #{2}} ([coll index] (. clojure.lang.RT (nth coll index))) ([coll index not-found] (. clojure.lang.RT (nth coll index not-found)))) diff --git a/src/jvm/clojure/lang/ArrayChunk.java b/src/jvm/clojure/lang/ArrayChunk.java index 92240440..3d3d645a 100644 --- a/src/jvm/clojure/lang/ArrayChunk.java +++ b/src/jvm/clojure/lang/ArrayChunk.java @@ -12,7 +12,7 @@ package clojure.lang; -public class ArrayChunk implements Indexed{ +public final class ArrayChunk implements Indexed{ final Object[] array; final int off; diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 2053273d..0a33f55a 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -493,6 +493,12 @@ static public IPersistentMap meta(Object x){ return null; } +public static int count(Counted o){ + if(o != null) + return o.count(); + return 0; +} + public static int count(Object o){ if(o instanceof Counted) return ((Counted) o).count(); @@ -711,6 +717,12 @@ static public Object dissoc(Object coll, Object key) throws Exception{ return ((IPersistentMap) coll).without(key); } +static public Object nth(Indexed coll, int n){ + if(coll != null) + return coll.nth(n); + return null; +} + static public Object nth(Object coll, int n){ if(coll instanceof Indexed) return ((Indexed) coll).nth(n); |