Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (in-ns 'user)
- (defn sort-parts
- "Lazy, tail-recursive, incremental quicksort. Works against
- and creates partitions based on the pivot, defined as 'work'."
- [work]
- (lazy-seq
- (loop [[part & parts] work]
- (if-let [[pivot & xs] (seq part)]
- (let [smaller? #(< % pivot)]
- (recur (list*
- (filter smaller? xs)
- pivot
- (remove smaller? xs)
- parts)))
- (when-let [[x & parts] parts]
- (cons x (sort-parts parts)))))))
- (defn qsort [xs]
- (sort-parts (list xs)))
- (first (qsort (vec (take 1000000 (iterate dec 999998)))))
- No message.
- [Thrown class java.lang.StackOverflowError]
- Restarts:
- 0: [QUIT] Quit to the SLIME top level
- Backtrace:
- 0: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 1: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 2: clojure.lang.RT.seq(RT.java:466)
- 3: clojure.core$seq.invoke(core.clj:133)
- 4: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 5: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 6: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 7: clojure.lang.RT.seq(RT.java:466)
- 8: clojure.core$seq.invoke(core.clj:133)
- 9: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 10: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 11: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 12: clojure.lang.RT.seq(RT.java:466)
- 13: clojure.core$seq.invoke(core.clj:133)
- 14: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 15: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 16: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 17: clojure.lang.RT.seq(RT.java:466)
- 18: clojure.core$seq.invoke(core.clj:133)
- 19: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 20: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 21: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 22: clojure.lang.RT.seq(RT.java:466)
- 23: clojure.core$seq.invoke(core.clj:133)
- 24: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 25: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 26: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 27: clojure.lang.RT.seq(RT.java:466)
- 28: clojure.core$seq.invoke(core.clj:133)
- 29: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 30: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 31: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 32: clojure.lang.RT.seq(RT.java:466)
- 33: clojure.core$seq.invoke(core.clj:133)
- 34: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 35: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 36: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 37: clojure.lang.RT.seq(RT.java:466)
- 38: clojure.core$seq.invoke(core.clj:133)
- 39: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 40: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 41: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 42: clojure.lang.RT.seq(RT.java:466)
- 43: clojure.core$seq.invoke(core.clj:133)
- 44: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- 45: clojure.lang.LazySeq.sval(LazySeq.java:42)
- 46: clojure.lang.LazySeq.seq(LazySeq.java:60)
- 47: clojure.lang.RT.seq(RT.java:466)
- 48: clojure.core$seq.invoke(core.clj:133)
- 49: clojure.core$filter$fn__3830.invoke(core.clj:2469)
- --more--
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement