<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -4,12 +4,10 @@
 ;; It turns out that my original implementation of remove-if would trash the stack with very large lists.  This can be verified by (on my setup at least) with `(remove-if even? (range 1000000))`.  After digesting some tips from [Chouser](http://chouser.n01se.net/), I chose to rewrite the function using [recur](http://clojure.org/special_forms#toc10) and [lazy-cons](http://clojure.org/api#toc277).  However, I have to admit that the documentation for both was ... spartan.  
 
 ; &lt;pre lang=&quot;lisp&quot;&gt;
-(defn remove-if [f lst]
-  (if (seq lst) ; idiomatic
-    (if (f (first lst))
-      (recur f (rest lst))
-      (lazy-cons (first lst) (remove-if f (rest lst))))
-    nil))
+(defn remove-if
+  &quot;Remove elements from a sequence coll if they satisfy a predicate f&quot;
+  [coll f]
+  (filter (complement f) coll))
 
 (remove-if even? (range 1000000)) ; go get some coffee... unless you have an Azul system
 ; &lt;/pre&gt;</diff>
      <filename>reading/onlisp/chapter2-redux.clj</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>242c3c97413df144707a7f8363b6eaa86525eddc</id>
    </parent>
  </parents>
  <author>
    <name>Fogus</name>
    <email>mefogus@gmail.com</email>
  </author>
  <url>http://github.com/fogus/polyglot/commit/c4b58f7c9b506a347fdb6c2ab1ebd641b0a51369</url>
  <id>c4b58f7c9b506a347fdb6c2ab1ebd641b0a51369</id>
  <committed-date>2009-05-10T17:53:15-07:00</committed-date>
  <authored-date>2009-05-10T17:53:15-07:00</authored-date>
  <message>Updating On Lisp -&gt; Clojure code to reflect Clojure 1.0-isms</message>
  <tree>ba7fc041d3b503bb8227001235113420bd271092</tree>
  <committer>
    <name>Fogus</name>
    <email>mefogus@gmail.com</email>
  </committer>
</commit>
