anchor.diff:  (defmethod print-object ((tmpl concat-template) stream)
     (format stream "#$(CONCAT ~{~A~^ ~})" (template-spec tmpl)))
   
  +;;; remainder template
  +
  +(define-unify-template wildcard)
  +
  +(defmethod print-object ((tmpl wildcard-template) stream)
  +  (format stream "#$~A" (template-spec tmpl)))
  +
  +(defmethod template-variables ((tmpl wildcard-template))
  +  (list (template-spec tmpl)))
  +
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
   ;; unify/impl
   ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
positive.code:   (if bindings
        (unify/impl x y bindings)))
  
  ;;; unify/impl for cons
  
  (defmethod unify/impl ((a cons) (b cons) bindings)
    (unify (rest a) (rest b)
           (unify (first a) (first b) bindings)))
  
  ;;; unify/impl for strings
  
  
negative.code: ;; #$ reader
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  
  ;; (defun sharp-$-reader (stream chr arg)
  ;;   (declare (ignore chr arg))
  ;;   (let ((spec (read stream nil nil t)))
  ;;     (typecase spec
  ;;       (cons (make-unify-template (find-symbol (symbol-name (first spec)) (find-package :unify))
  ;;                                  (cdr spec)))
  ;;       (symbol (make-unify-template 'variable spec))
  ;;       (t (error "bad format of tempalte: ~A" spec)))))
  
  ;;(set-dispatch-macro-character #\# #\$ #'unify::sharp-$-reader)
  