<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -300,36 +300,11 @@ following example illustrates its use:
   16
 ----------------------------------------------
 
-SLICE fixes certain arguments of a given function and returns a
-function on the remaining (free) arguments.  Here are some examples:
-
------------------------------------------------------------------------------------
-  CL-USER&gt; (funcall (slice #'&lt; _ 10) 5)
-  T
-  CL-USER&gt; (funcall (slice #'concatenate 'string) (list #\f #\o #\o #\b #\a #\r))
-  &quot;foobar&quot;
------------------------------------------------------------------------------------
-
 Hash table utilities
 ^^^^^^^^^^^^^^^^^^^^
 
-To quickly create a hash table you can use ALIST-&gt;HASH-TABLE.  Here's
-an example:
-
------------------------------------------------------------------------------
-  CL-USER&gt; (defparameter *hash-table*
-             (alist-&gt;hash-table (pairlis '(&quot;one&quot; &quot;two&quot; &quot;three&quot;) '(1 2 3))))
-  *HASH-TABLE*
-  CL-USER&gt; *hash-table*
-  #&lt;HASH-TABLE :TEST EQL :COUNT 3 {AAEAF99}&gt;
------------------------------------------------------------------------------
-
-The function ALIST-&gt;HASH-TABLE will process the specified list and
-pass every other parameter to MAKE-HASH-TABLE.  That way, you can
-control how the hash table will behave.
-  
-Now, if you want to traverse a hash table, DOHASH can iterate over it
-with semantics similar to those of DOLIST:
+If you want to traverse a hash table, DOHASH can iterate over it with
+semantics similar to those of DOLIST:
 
 -------------------------------------------------------
   CL-USER&gt; (dohash (key value *hash-table*)
@@ -344,14 +319,6 @@ with semantics similar to those of DOLIST:
   6  
 -------------------------------------------------------
 
-Finally, for easy serialization, there's HASH-TABLE-&gt;ALIST, which
-converts the specified hash table to an association list:
-
----------------------------------------------
-  CL-USER&gt; (hash-table-&gt;alist *hash-table*)
-  ((&quot;one&quot; . 1) (&quot;two&quot; . 2) (&quot;three&quot; . 3))
----------------------------------------------
-
 Strings
 ^^^^^^^
 </diff>
      <filename>README</filename>
    </modified>
    <modified>
      <diff>@@ -22,21 +22,6 @@
 ;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 ;;; DEALINGS IN THE SOFTWARE.
 
-(defmacro slice (function &amp;rest args)
-  ;; Inspired by iterate's sharpl reader macro and
-  ;; http://srfi.schemers.org/srfi-26/srfi-26.html
-  (let ((lambda-list nil)
-        (parameters nil)
-        (remaining-args (gensym &quot;SLICE&quot;)))
-    (dolist (x args)
-      (if (eq x '_)
-          (let ((s (gensym &quot;SLICE&quot;)))
-            (push s lambda-list)
-            (push s parameters))
-          (push x parameters)))
-    `(lambda (,@(nreverse lambda-list) &amp;rest ,remaining-args)
-       (apply ,function ,@(nreverse parameters) ,remaining-args))))
-
 (defun $ (&amp;rest functions)
   &quot;Returns the composition of FUNCTIONS.  Note that FUNCTIONS must 
   be composable in the order specified.
@@ -48,7 +33,7 @@
                     2)
   16
 
-  INCF-CL&gt; (funcall ($ #'values #'floor #'sqrt (slice #'expt _ 2)) -2)
+  INCF-CL&gt; (funcall ($ #'values #'floor #'sqrt (lambda (x) (expt x 2))) -2)
   2&quot;
   (assert (every #'functionp functions))
   (flet ((compose (f g)</diff>
      <filename>function.lisp</filename>
    </modified>
    <modified>
      <diff>@@ -31,19 +31,3 @@ NIL or the result of evaluating RESULT-FORM if it was specified.&quot;
       (progn
         ,@body)
       finally (return ,result-form)))
-
-(defun hash-table-&gt;alist (hash-table)
-  &quot;Returns an association list containing the keys and values in
-HASH-TABLE.&quot;
-  (let (alist)
-    (dohash (key value hash-table alist)
-      (setf alist (acons key value alist)))))
-
-(defun alist-&gt;hash-table (alist &amp;rest make-hash-table-parameters)
-  &quot;Returns a new hash table containing the keys and values present in
-each element of the association list ALIST.  The hash table will be
-created using MAKE-HASH-TABLE-PARAMETERS.&quot;
-  (let ((hash-table
-         (apply #'make-hash-table make-hash-table-parameters)))
-    (dolist (x alist hash-table)
-      (setf (gethash (car x) hash-table) (cdr x)))))</diff>
      <filename>hash-table.lisp</filename>
    </modified>
    <modified>
      <diff>@@ -53,14 +53,10 @@
            #:intersperse
            #:nintersperse
            #-clisp #:dohash
-           #:hash-table-&gt;alist
-           #:alist-&gt;hash-table
            #:while
            #:string-join
            #:signals-p
            #:doctest
-           #:slice
-           #:_
            #:$
            #:nest
            #:nest-list</diff>
      <filename>package.lisp</filename>
    </modified>
    <modified>
      <diff>@@ -145,7 +145,9 @@ LIST itself is used.&quot;)
 (defmethod insert (x (list list) &amp;key key (test #'&lt;) test-not)
   (check-type key function-or-null)
   (let ((test (canonicalize-test test test-not)))
-    (multiple-value-bind (lt ge) (span (slice test _ (apply-key key x)) list :key key)
+    (multiple-value-bind (lt ge) (span (lambda (z)
+                                         (funcall test z (apply-key key x)))
+                                       list :key key)
       (nconc lt (cons x ge)))))
 
 (defun replicate (n x)
@@ -342,7 +344,7 @@ LIST itself is used.
 
   For example,
 
-  INCF-CL&gt; (mapcar (slice #'concatenate 'string)
+  INCF-CL&gt; (mapcar (lambda (x) (concatenate 'string x))
                    (group (coerce \&quot;Mississippi\&quot; 'list)))
   (\&quot;M\&quot; \&quot;i\&quot; \&quot;ss\&quot; \&quot;i\&quot; \&quot;ss\&quot; \&quot;i\&quot; \&quot;pp\&quot; \&quot;i\&quot;)&quot;))
 
@@ -354,7 +356,8 @@ LIST itself is used.
     (do ()
         ((null list) (rest result))
       (destructuring-bind (x . xs) list
-        (multiple-value-bind (ys zs) (span (slice test (apply-key key x))
+        (multiple-value-bind (ys zs) (span (lambda (z)
+                                             (funcall test z (apply-key key x)))
                                            xs :key key)
           (setf splice (setf (rest splice) (list (cons x ys))))
           (setf list zs))))))</diff>
      <filename>prelude.lisp</filename>
    </modified>
    <modified>
      <diff>@@ -70,7 +70,7 @@
   (is (eq nil (take-while (constantly t) nil)))
   (is (eq nil (take-while (constantly nil) (list 1 2 3))))
   (is (equal (list 1 2 3) (take-while (constantly t) (list 1 2 3))))
-  (is (equal (list 1 2) (take-while (slice #'&lt;= _ 2)
+  (is (equal (list 1 2) (take-while (lambda (x) (&lt;= x 2))
                                     (list 1 2 3)))))
 
 (deftest test-drop-while ()
@@ -78,7 +78,7 @@
   (is (eq nil (drop-while (constantly t) (list 1 2 3))))
   (is (equal (list 1 2 3) (drop-while (constantly nil)
                                       (list 1 2 3))))
-  (is (equal (list 3) (drop-while (slice #'&lt;= _ 2)
+  (is (equal (list 3) (drop-while (lambda (x) (&lt;= x 2))
                                   (list 1 2 3)))))
 
 (deftest test-partition ()
@@ -90,7 +90,7 @@
              (list nil (list 1 2 3))))
   (is (equal (multiple-value-list (partition #'oddp (list 1 2 3 4 5)))
              (list (list 1 3 5) (list 2 4))))
-  (is (equal (multiple-value-list (partition (slice #'= 3)
+  (is (equal (multiple-value-list (partition (lambda (x) (= x 3))
                                              (list &quot;foo&quot; &quot;bar&quot; &quot;baz&quot; &quot;quux&quot;)
                                              :key #'length))
              '((&quot;foo&quot; &quot;bar&quot; &quot;baz&quot;) (&quot;quux&quot;)))))
@@ -146,14 +146,6 @@
   (is (equal (acons 0 0 (acons 0 1 (acons 1 0 (acons 1 1 nil))))
              (lc (cons i j) (&lt;- i '(0 1)) (&lt;- j '(0 1))))))
 
-(deftest test-hash-table-&gt;alist ()
-  (is (equal (sort (hash-table-&gt;alist
-                    (alist-&gt;hash-table
-                     (pairlis '(&quot;one&quot; &quot;two&quot; &quot;three&quot;)
-                              '(1 2 3))))
-                   #'&lt; :key #'cdr)
-             (acons &quot;one&quot; 1 (acons &quot;two&quot; 2 (acons &quot;three&quot; 3 nil))))))
-
 (deftest test-string-join ()
   (is (eq nil (string-join nil nil)))
   (is (eq nil (string-join nil)))
@@ -165,7 +157,7 @@
 
 (defun read-lines (stream)
   (when (streamp stream)
-    (unfold (slice #'eq stream _)
+    (unfold (lambda (x) (eq stream x))
             #'identity
             (lambda (x)
               (declare (ignore x))
@@ -175,7 +167,7 @@
 (deftest test-unfold ()
   (is (eq nil (unfold (constantly t) #'identity #'identity 0)))
   (is (equal (range 0 .1 (/ pi 2))
-             (unfold (slice #'&gt; _ (/ pi 2))
+             (unfold (lambda (x) (&gt; x (/ pi 2)))
                      #'identity
                      (lambda (x) (+ x 0.1))
                      0)))
@@ -184,7 +176,7 @@
                                      2
                                      3&quot;)
     (is (equal (list &quot;1&quot; &quot;2&quot; &quot;3&quot;)
-               (mapcar (slice #'string-trim &quot; #\Tab&quot; _)
+               (mapcar (lambda (x) (string-trim &quot; #\Tab&quot; x))
                        (read-lines stream))))))
 
 (deftest test-doctest ()
@@ -246,7 +238,7 @@
   (signals type-error (group nil :key 0))
   (signals type-error (group nil :test 0))
   (is (eq nil (group nil :test #'equal)))
-  (is (equal (group (list &quot;abc&quot; &quot;aardvark&quot; &quot;ant&quot; &quot;buffalo&quot; &quot;zebra&quot;) :key (slice #'elt _ 0))
+  (is (equal (group (list &quot;abc&quot; &quot;aardvark&quot; &quot;ant&quot; &quot;buffalo&quot; &quot;zebra&quot;) :key (lambda (x) (elt x 0)))
              '((&quot;abc&quot; &quot;aardvark&quot; &quot;ant&quot;) (&quot;buffalo&quot;) (&quot;zebra&quot;))))
   (is (equal (concatenate 'string
                           (mapcan #'identity</diff>
      <filename>test-suite.lisp</filename>
    </modified>
    <modified>
      <diff>@@ -22,7 +22,6 @@
 ;;; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
 ;;; DEALINGS IN THE SOFTWARE.
 
-
 (defun unfold (predicate transformer incrementor initial-value
                &amp;optional (tail-gen (constantly nil)))
   &quot;Returns a list built following the pattern:
@@ -33,7 +32,7 @@
 
   1. List of squares: 1^2, ..., 10^2
 
-  INCF-CL&gt; (unfold (slice #'&gt; _ 10) (slice #'expt _ 2) #'1+ 1)
+  INCF-CL&gt; (unfold (lambda (x) (&gt; x 10)) (lambda (x) (expt x 2)) #'1+ 1)
   (1 4 9 16 25 36 49 64 81 100)
 
   2. Append (3 4 5) onto (1 2)</diff>
      <filename>unfold.lisp</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>7ef1e8e1ddad5739603f6ec0761bff4e8a321049</id>
    </parent>
  </parents>
  <author>
    <name>Juan M. Bello Rivas</name>
    <email>jmbr@superadditive.com</email>
  </author>
  <url>http://github.com/jmbr/incf-cl/commit/1d0e8dbfec68566ce7d2ce7865cb166db6d6a6ad</url>
  <id>1d0e8dbfec68566ce7d2ce7865cb166db6d6a6ad</id>
  <committed-date>2008-05-17T04:45:49-07:00</committed-date>
  <authored-date>2008-05-17T04:45:49-07:00</authored-date>
  <message>Removed functionality also available in Alexandria.</message>
  <tree>3cd36722fb0771cf05d966e7d8e34b6bdcababd5</tree>
  <committer>
    <name>Juan M. Bello Rivas</name>
    <email>jmbr@superadditive.com</email>
  </committer>
</commit>
