diff options
author | Rich Hickey <richhickey@gmail.com> | 2009-06-24 12:19:18 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2009-06-24 12:19:18 -0400 |
commit | 9b6b549df3d2d835f6c2305e6962e31b21b374af (patch) | |
tree | c25bcc2390f07c313e345a00607940a969cb5169 /src/jvm | |
parent | 72de405ca6454ecf5d76a170c7ac09900af5539f (diff) |
perf tweaks in reduce
Diffstat (limited to 'src/jvm')
-rw-r--r-- | src/jvm/clojure/lang/ArrayChunk.java | 6 | ||||
-rw-r--r-- | src/jvm/clojure/lang/IChunk.java | 1 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/jvm/clojure/lang/ArrayChunk.java b/src/jvm/clojure/lang/ArrayChunk.java index 90264c57..d5a5a77b 100644 --- a/src/jvm/clojure/lang/ArrayChunk.java +++ b/src/jvm/clojure/lang/ArrayChunk.java @@ -46,4 +46,10 @@ public IChunk dropFirst(){ return new ArrayChunk(array, off + 1, end); } +public Object reduce(IFn f, Object start) throws Exception{ + Object ret = f.invoke(start, array[off]); + for(int x = off + 1; x < end; x++) + ret = f.invoke(ret, array[x]); + return ret; +} } diff --git a/src/jvm/clojure/lang/IChunk.java b/src/jvm/clojure/lang/IChunk.java index 53e9bf08..fd667161 100644 --- a/src/jvm/clojure/lang/IChunk.java +++ b/src/jvm/clojure/lang/IChunk.java @@ -16,4 +16,5 @@ public interface IChunk extends Indexed{ IChunk dropFirst(); +Object reduce(IFn f, Object start) throws Exception; } |