anchor.diff:         :finally (return result))))
   
   
  -(defun explode-string (string)
  -  "
  -return a new list containing the character in the sequence string.
  -"
  -  (map 'list (function character) string))
  +(defgeneric explode (object &optional result-type)
  +  (:documentation "
  +RETURN:         A sequence of character of type RESULT-TYPE containing
  +                the character of the OBJECT.
  +RESULT-TYPE:    A sequence type accepted by MAP (not NIL). Default: LIST.
  +OBJECT:         Can be a string, a symbol (its symbol-name is exploded),
  +                or a random object (its prin1 representation is exploded).
  +")
  +  (:method ((object symbol) &optional (result-type 'list))
  +    (explode-string (symbol-name object) result-type))
  +  (:method ((object string) &optional (result-type 'list))
  +    (explode-string object result-type))
  +  (:method ((object vector) &optional (result-type 'list))
  +    (explode-string (implode-string object) result-type))
  +  (:method ((object t) &optional (result-type 'list))
  +    (explode-string (prin1-to-string object) result-type)))
  +
  +
  +(defun implode (char-seq &optional (result-type 'symbol) (package *package*))
  +  "
  +RETURN:         An object of type RESULT-TYPE made with the character
  +                in the CHAR-SEQ sequence. Default: SYMBOL.
  +RESULT-TYPE:    SYMBOL (default), or STRING, or another type, in which
  +                case the object is obtained from reading from the
  +                string obtained from the implosion of the characters
  +                CHAR-SEQ.
  +PACKAGE:        When RESULT-TYPE is SYMBOL, then the package where the
  +                symbol is interned. Default: *PACKAGE*.
  +"
  +  (case result-type
  +    (string (implode-string char-seq))
  +    (symbol (intern (implode-string char-seq) package))
  +    (otherwise  (let ((object (read-from-string (implode-string char-seq))))
  +                  (assert (typep object result-type) ()
  +                          "~S is of type ~S which is not the expected type ~S"
  +                          object (type-of object) result-type)
  +                  object))))
  +
  +
  +(defun explode-string (string &optional (result-type 'list))
  +  "
  +RETURN:         A new sequence containing the character in the
  +                sequence string.
  +RESULT-TYPE:    A sequence type accepted by MAP.  Default: LIST.
  +"
  +  (map result-type (function character) string))
   
   
   (defun implode-string (char-seq)
  
positive.code: RETURN: A new string containing the characters in the sequence CHAR-SEQ.
  "
    (map 'string (function character) char-seq))
  
  
  (define-compiler-macro implode-string (&whole form  char-seq)
  
negative.code:    "PREFIXP" "SUFFIXP"
     "SPLIT-NAME-VALUE" "STRING-REPLACE" "UNSPLIT-STRING" "SPLIT-STRING"
     "SPLIT-ESCAPED-STRING" "IMPLODE-STRING" "EXPLODE-STRING"
     "IMPLODE" "EXPLODE"
     "CONCATENATE-STRINGS")
    (:documentation
     "
  