anchor.diff:  
     (flush))
   
  -(define (formout stream control . args)
  -  (formout-list stream control args))
  +(define (formout writer control . args)
  +  (formout-list writer control args))
   
   (define (format-list control args)
     (define buf (make-string-buffer))
  -  (formout-list (string-buffer-stream buf) control args)
  +  (formout-list (string-buffer-writer buf) control args)
     (string-buffer-to-string buf))
   
   (define (format control . args)
  
positive.code:     (define (unquote name)
        (begin
          (define str (character-string (unquote ch)))
          (lambda (stream) (write-string stream str))))))
  
  (define-char-printer print-newline #\Newline)
  (define-char-printer print-double-quote #\")
  
  (define (print-number stream num)
    (if (= num 0)
        (write-string stream "0")
        (begin
          (unless (and (<= 2 *print-radix*)
                       (<= *print-radix* (string-length print-number-digits)))
  
negative.code:     (unspecified . "unspecified")
      (() . "()")))
  
  (define (print-list writer l)
    (write-string writer "(")
    (print writer (car l))
    (set! l (cdr l))
  
    (while (pair? l)
      (write-string writer " ")
      (print writer (car l))
      (set! l (cdr l)))
  
    (unless (null? l)
      (write-string writer " . ")
      (print writer l))
  
    (write-string writer ")"))
  
  (define (print writer obj)
    (cond ((pair? obj)
           (print-list writer obj))
          ((number? obj)
           (print-number writer obj))
          ((string? obj)
           (print-string writer obj))
          ((symbol? obj)
           (print-symbol writer obj))
          ((function? obj)
           (write-string writer "#<function>"))
          (true
           (define special (assoc obj special-printed-forms))
           (if special
               (write-string writer (cdr special))
               (error "cannot print object")))))
  
  ;;; Formatted IO
  
  (define (formout-list writer control args)
    (define pos 0)
    (define write-from 0)
    (define control-len (string-length control))
    (define ch)
  
    (define (flush)
      (write-substring writer control write-from (- pos write-from)))
  
    (while (< pos control-len)
      (set! ch (string-ref control pos)) 
  