anchor.diff:  
   (let ((lock (make-lock "print-lock")))
     (defun printk (&rest arguments)
  +    "This is our log-to-screen function. Works like format, but makes sure messages are printed atomically.
  +     It also starts each new message on its own line (since there's no guarantee that the previous message
  +    is even from the same thread, this is totally reasonable)."
       (with-lock-held (lock)
  -      (apply #'format t arguments))))
  +      (apply #'format t "~&~@?" arguments))))
   
   ;;; FIXME: make sure these threadsafe functions truly are
   
  
positive.code:                                 :name (gensym "NETWORK") :process *top-kell*))
      (unwind-protect
          (loop do
            (printk "~&> ")
            (handler-case (let ((process (eval (read))))
                            (printk "~&~a~%" process)
                            (add-process process *top-kell*))
              (end-of-file () (return))
              (error (c) (printk "~&ERROR: ~a~%" c))))
        (mapc #'destroy-thread kilns)
        (clear-events))))
  
  
negative.code:                 (pattern trigger) matched-processes (process trigger))
          (trigger-process trigger substitutions)
          (mapc #'activate-continuation matched-processes)
          (printk "~a~%" (parent kell))))))
  
  (defun find-triggers-matching-message (name kell)
    "Collect down-patterns from parent kell, up-patterns from subkells, and local-
  