anchor.diff:             (ado ,@(cdr body)))))
   
   (mac accum (accfn &body body)
  -  "The result is all of the arguments passed into accfn"
  +  "Binds ACCFN to a function which will accumulate values. The result
  +   of accum is all of the elements passed to ACCFN in the same
  +   order."
     (w/uniq gacc
       `(let ,gacc '()
          (flet1 ,accfn (arg) (push arg ,gacc)
  
positive.code:        (nrev ,gacc))))
  
  (def multiple (x y)
    "A predicate for testing if x is a multiple of y"
    (zerop (mod x y)))
  
  (mac check (x test &optional alt)
    "If x passes the test return it, otherwise evaluate alt"
    (w/uniq val
      `(let ,val ,x
         (if (funcall ,test ,val)
  
negative.code:              ,set))))))
  
  (mac in (x &rest choices)
    "Returns t if X is one of the results of evaluating every CHOICE
     (lazily)."
    (w/uniq val
      `(let ,val ,x
         (or ,@(map (fn (c) `(is ,val ,c)) choices)))))
  
  (mac cart (f xs ys)
    "Applies F to a variation of the cartesian product of XS and YS.
     While going through XS, every element is bound to 'it' which
     can be used to modify YS."
    (w/uniq y
      `(mapcan (fn (it) ; It is okay to use mapcan since map conses.
                   (map (fn (,y)
                            (funcall ,f it ,y))
                        ,ys))
  