anchor.diff:                     (write-it item s)
                      (setf printed? t)))))
         (lambda (&rest args)
  +        (declare (dynamic-extent args))
           (if args
               (mapc #'p args)
               (coerce arr 'string))))))
  +
  +(defun make-string-builder (&optional
  +                              delimiter
  +                              (ignore-empty-strings-and-nil t))
  +  "Create a function that will build up a string for you
  +   Each call to the function with arguments appends those arguments to the string
  +   with an optional delimiter between them.
  +
  +   if ignore-empty-strings-and-nil is true neither empty strings nor nil will be
  +   printed to the stream
  +
  +   A call to the function with no arguments returns the output string"
  +  (let ((formatter (make-formatter :delimiter delimiter))
  +        (include-empty? (not ignore-empty-strings-and-nil)))
  +    (flet ((include-arg? (arg)
  +             (or include-empty?
  +                 (if (stringp arg)
  +                     (plusp (length arg))
  +                     arg))))
  +      (lambda (&rest args)
  +        (declare (dynamic-extent args))
  +        (if args
  +            (loop for arg in args
  +                  when (include-arg? arg)
  +                    do (apply formatter (list "~A" arg)))
  +            (funcall formatter))))))
   
   (defmacro with-string-builder ((name &key delimiter (ignore-empty-strings-and-nil t))
                                  &body body)
  
positive.code:    #:make-string-builder
     #:with-mapping-collector
     #:with-mapping-appender
     ))
  
  (in-package :collectors)
  
  (defun make-string-builder (&optional
                              delimiter
                              (ignore-empty-strings-and-nil t)
                              (pretty nil))
  
negative.code:                                :ignore-empty-strings-and-nil ,ignore-empty-strings-and-nil)
      ,@body
      (,name)))
  
  ;;;; Mapping collectors
  (defmacro with-mapping-collector ((name fn-args &body fn-body)
  