anchor.diff:  ;;;; the implementation tag.
   ;;;; The implementation tag will be added to the current *concepts-package*
   ;;;; if not already there (with + around it)
  -(defmacro implement-concept ( (concept-name implementation-tag doc) &body body )
  -  (let ((method-name (intern (concatenate 'string (symbol-name concept-name) "-METHOD-IMPL")))
  +(defmacro implement-concept ( (concept-name implementation-tag doc &key (default-implementation nil)) &body body )
  +  (let ((method-name (intern (concatenate 'string (symbol-name concept-name) "-IMPL")))
   	(body-lambda-args (car body))
   	(body-body (cdr body)))
       (let* ((implementation-tag-+ (concatenate 'string "+" (symbol-name implementation-tag) "+"))
   	   (implementation-tag-symbol 
   	    (find-or-make-implementation-tag implementation-tag-+ (symbol-name concept-name) doc))
  -	   (concept-check (list (gensym "concept-var-") (list 'eql implementation-tag-symbol))))
  +	   (concept-check (list (gensym "concept-var-") `(eql ',implementation-tag-symbol))))
  +      (when (and 
  +	     (eq (symbol-value (find-concept-symbol (symbol-name concept-name)))
  +		 +UNSET-IMPLEMENTATION-TAG+)
  +	     default-implementation)
  +	(setf (symbol-value (find-concept-symbol (symbol-name concept-name)))
  +	      implementation-tag-symbol))
         `(define-concept-method-impl ,method-name (,concept-check ,@body-lambda-args) ,@body-body))))
   
   
  
positive.code:   
  
  	
  
  ;;;;
  ;;;; Define a particular concept
  ;;;; This just makes it's name available in the current concepts package
  ;;;; (or the given concepts package, defautls ot current)
  (defmacro define-concept (concept-name concept-args doc &key (package *concepts-package*) (error-when-duplicate-concept t))
    (let ((concept-method (intern (concatenate 'string (symbol-name concept-name) "-METHOD")))
  	(concept-method-impl (intern (concatenate 'string (symbol-name concept-name) "-METHOD-IMPL"))))
      (with-concepts-package package
        (if (and (find-symbol (symbol-name concept-name) *concepts-package*)
  	       error-when-duplicate-concept)
  
negative.code:   (+ x y))
  
  (implement-concept 
      (foobar impl-generic "GENERIC foobar implementation" :default-implementation t)
    (x y)
    (- x y))
  
  