anchor.diff:  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   (in-package :sykobot)
   
  -;; ;;; Response stack
  -;; ;;; Used to assist piping and multiple return values
  -;; (defvar *responses*)
  -
   ;;; Modularization of commands
   (defproto command-bot ((proto 'listener-bot))
     ((commands (make-hash-table :test #'equal))
  
positive.code: (defreply command-function ((bot (proto 'command-bot)) name)
    (or (let ((cmd (find-command bot name)))
  	(when cmd (cmd-function cmd)))
        (lambda (bot args sender channel)
  	(declare (ignore bot args sender channel))
  	(error (build-string "I don't know how to ~A"
  			     name)))))
  
  (defreply erase-all-commands ((bot (proto 'command-bot)))
    (clrhash (commands bot)))
  
negative.code:                               (sender (proto 'string))
                                (channel (proto 'string))
                                (message (proto 'string)))
    (destructuring-bind (command &optional *message*)
        (split "\\s+" message :limit 2)
      (send-reply bot channel sender
                  (funcall (command-function bot command))))
    #+nil (let* ((results (process-command-string bot message sender channel)))
            (loop for result in results
               do (send-reply bot channel sender (build-string result)))))
  