anchor.diff:  (defmethod handle-command ((module respond-module)
                              (command (eql 'learn))
                              message args)
  -  "learn <term> ( is | isn't | are | aren't | < verb > ) <tidbit> - learn a new response"
  +  "learn <term> ( am | is | isn't | are | aren't | < <verb> > | < reply > ) <tidbit> - learn a new response"
     (let ((text (join-string " " args)))
       (cond
         ((extract-learnable (responses-of module)
  
positive.code: 
  (in-package #:orcabot)
  
  (defparameter +learn-regexes+ (list
                               (cl-ppcre:create-scanner "(.*?)\\s+(is|are|isn't|aren't)\\s+(.*)"
                                                        :case-insensitive-mode t)
                               (cl-ppcre:create-scanner "(.*?)\\s+<(\\S+)>\\s*(.*)"
                                                        :case-insensitive-mode t)))
  (defun load-response-db (db path)
    (clrhash db)
    (dolist (x (with-open-file (inf path :direction :input :if-does-not-exist nil)
  
negative.code: (defmodule respond respond-module ("learn" "lookup")
    (responses :accessor responses-of)    ; hashtable of responses to exact matches
    (regexes :accessor regexes-of))       ; ordered list of regular expressions to match
  
  (defmethod initialize-module ((module respond-module) config)
    ;; regexes loaded by configuration
  