Advertisement
Guest User

Untitled

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