anchor.diff:                       :initargs initargs
                        :method method
                        :mode mode
  +                     :precondition precondition
                        :uri-template uri-template))))
   
   (defun method= (request-method rule-method)
     (eq request-method rule-method))
  +
  +(defun precondition-satisfy (precondition request)
  +  "Return T if PRECONDITION is null, or REQUEST satisfies the PRECONDITION."
  +  (check-type precondition (or function null))
  +  (check-type request eloquent.mvc.request:<request>)
  +  (or (null precondition)
  +      (funcall precondition request)))
   
   (defun print-rule (rule)
     "Display the information of RULE in readable form."
  
positive.code: (defmethod matchp ((request eloquent.mvc.request:<request>) (rule <rule>))
    (let ((request-method (eloquent.mvc.request:request-method request))
          (request-path-info (eloquent.mvc.request:request-path-info request)))
      (with-slots (method mode uri-template) rule
        (and (method= request-method method)
             (path-info= mode request-path-info uri-template
                         :request request)))))
  
  (defmethod path-info= ((mode (eql :normal)) (path-info string) (uri-template string)
                         &key request)
  
negative.code:          :initarg :mode
           :reader rule-mode
           :type keyword)
     (precondition :documentation "A function designates the precondition of matching this rule."
                   :initarg :precondition
                   :reader rule-precondition
                   :type function)
     (uri-template :documentation "URI template of paths handled by the action in this rule"
                   :initarg :uri-template
                   :reader rule-uri-template
  