From: Eliot Handelman
Subject: macro character error in KCl
Date: 
Message-ID: <4259@idunno.Princeton.EDU>
Some people will remember this from a previous discussion:

(defvar test-read-table (copy-readtable))

(set-macro-character #\: #'(lambda (stream char) :colon)
                            nil test-read-table)

(defun s (string)
  (let ((words '())
        (index 0)
        (*readtable* test-read-table))
      (loop
        (multiple-value-bind (word next-index)
            (read-from-string string nil nil :start index)
	  (setq index next-index)
	  (cond (word
	    (push word words))
		  (t
		   (return (nreverse words)))))))))

In KCl, (s "x:x") returns the error "There is no package named X."
I believe the correct behavior would be to return (X :COLON X).

Suggestions, workarounds?

--eliot