<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -150,13 +150,14 @@ There are a few compatibility functions with Haskell's Prelude.
 Currently, the following are implemented:
 
 * BREAK*
-* CYCLE (and its destructive variant NCYCLE).
+* CYCLE (and its destructive version NCYCLE).
 * CURRY
 * DROP
 * DROP-WHILE
 * FILTER (more general than its Haskell counterpart).
 * FLIP
 * INSERT
+* INTERSPERSE (and its destructive version NINTERSPERSE).
 * REPLICATE
 * SCAN* (using the key parameters :initial-value and :from-end it works as
   scanl, scanl1, scanr or scanr1)
@@ -175,6 +176,41 @@ DESCRIBE or C-c C-d d in SLIME) and also
 http://undergraduate.csse.uwa.edu.au/units/230.301/lectureNotes/tourofprelude.html[A
 tour of the Haskell's prelude] to see more use cases.
 
+Unfolding
+^^^^^^^^^
+
+There's an implementation of UNFOLD and UNFOLD-RIGHT as specified in
+http://srfi.schemers.org/srfi-1/srfi-1.html#unfold[SRFI 1: List
+library]
+
+Here's an example of UNFOLD:
+
+--------------------------------------------------------------------------
+  (defun euler (f x0 y0 interval h)
+    &quot;Computes an approximate solution of the differential equation
+
+      y' = f(x, y), x in interval;  y(x0) = y0
+
+    using Euler's explicit method.  Interval is a list of two elements
+    representing a closed interval.  The function returns a list of
+    points and the values of the approximate solution at those points.
+
+    For example,
+
+    EULER&gt; (euler (lambda (x y)
+                    (declare (ignore y))
+                    (- (sin x)))
+                  0 1 (list 0 (/ pi 2)) 0.5)
+    ((0 1) (0.5 1.0) (1.0 0.7602872) (1.5 0.33955175))&quot;
+    (assert (&lt;= (first interval) (second interval)))
+    (unfold (lambda (x) (&gt; (first x) (second interval)))
+            #'identity
+            (lambda (pair)
+              (destructuring-bind (x y) pair
+                (list (+ x h) (+ y (* h (funcall f x y))))))
+            (list x0 y0)))
+-------------------------------------------------------------------------
+
 Hash table utilities
 ^^^^^^^^^^^^^^^^^^^^
 </diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -25,6 +25,9 @@
 (defun string-join (list &amp;optional (sep &quot; &quot;))
   &quot;Returns a string joining each string in LIST by SEP.  If SEP is not
 specified, the default separator is a space.&quot;
+  ;; TODO This should use intersperse as soon as it works with
+  ;; arbitrary sequences.
+
   ;; Based on Pascal Costanza's approach at
   ;; http://groups.google.com/group/comp.lang.lisp/msg/8adbef3a067ece78
   (when list</diff>
      <filename>string.lisp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>cca6a3f64295c735a762662b2b4fa58f0ba7df87</id>
    </parent>
  </parents>
  <author>
    <name>Juan M. Bello Rivas</name>
    <email>jmbr@superadditive.com</email>
  </author>
  <url>http://github.com/jmbr/incf-cl/commit/3ac765cf6b6cfcea7214cd99ee239088ce88a536</url>
  <id>3ac765cf6b6cfcea7214cd99ee239088ce88a536</id>
  <committed-date>2007-12-14T11:59:46-08:00</committed-date>
  <authored-date>2007-12-14T11:59:46-08:00</authored-date>
  <message>Updated documentation.</message>
  <tree>04a7413f6eaa168c11ff4c684e2b78a431f12460</tree>
  <committer>
    <name>Juan M. Bello Rivas</name>
    <email>jmbr@superadditive.com</email>
  </committer>
</commit>
