<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi<div><br></div><div>I created a new macro-character #\: to check and disallow access to not external symbols as follows:</div><div><br></div><div><div>(defun check-columns (stream char)</div><div>&nbsp;&nbsp;(let ((ch (peek-char nil stream t nil t)))</div><div>&nbsp;&nbsp; &nbsp;(if (eql ch #\:)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(error "<b>access to internal symbols not allowed</b>")</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>(progn</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp;(unread-char #\: stream)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp;(set-macro-character #\: nil)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp;(let ((res (read stream t nil t)))</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;(set-macro-character #\: #'check-columns)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp; &nbsp;res)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span> &nbsp;))))</div><div><br></div><div>(set-macro-character #\: #'check-columns)</div><div><br></div><div>Note: according to the book ANSI Common Lisp by Paul Graham, unread-char cannot be done</div><div>after a peek-char. But in my tests ccl did not complain.</div><div><br></div><div>Now I would like to restore the standard readtable but failed. I tried the following:</div><div><br></div><div>(set-macro-character #\: nil)</div><div><br></div><div>Even if I quit ccl and launch a new image I still get the following message when I try to access a symbol using ::</div><div><br></div><div><br></div><div>? (make-package 'test)</div><div><div>? (setq test::x 1)</div><div><br></div><div>&gt; Error: <b>access to internal symbols not allowed</b></div><div>&gt; While executing: MB::CHECK-COLUMNS, in process listener(1).</div><div>&gt; Type :POP to abort, :R for a list of available restarts.</div><div>&gt; Type :? for other options.</div><div>1 &gt;&nbsp;</div><div><br></div><div><br></div><div>How do I restore the standard readtable</div><div><br></div><div>Kind regards</div><div><br></div><div>-Taoufik</div></div></div></body></html>