anchor.diff:  (defun filter (fn &rest lsts)
     (let ((acc nil))
       (dolist (args (apply #'mapcar #'list lsts) (nreverse acc))
  -        (aif (apply fn args)
  -          (push it acc)))))
  +      (aif (apply fn args)
  +        (push it acc)))))
   ;;; To tell the truth, what I used in my code was more limited version.;{{{
   ;;; I called this function COLLECT, and implementation was following.
   ;(defun collect (lst pred)
  
positive.code: (defun group (lst n)
    (if (zerop n) (error "zero length"))
    (labels ((rec (lst acc)
             (let ((rest (nthcdr n lst)))
               (if (consp rest)
                 (rec rest (cons (subseq lst 0 n) acc))
                 (nreverse (cons lst acc))))))
      (rec lst nil)))
  
  ;(group (list 1 2 3 4 6) 2)
  
negative.code:              generalized boolean.
      key --- a designator for a function of one parameter.
  
     It first removes all the objects that is equal to OBJ in PLACE and
     then PUSHes the OBJ into PLACE. Equality of objects are checked with
     the value that is acquired by applying the function specified to KEY
     keyword parameter and tested by the function specified to TEST
     keyword parameter. Defaults for KEY and TEST are #'IDENTITY and
     #'EQL, respectively.  The KEY function, if supplied, is applied to
     OBJ too and the result object is used to the equality check, likewise
     PUSHNEW and ADJOIN.
     "
    (once-only (obj)
      `(progn
  