1
0
Fork 0
cl-sites/HyperSpec-7-0/HyperSpec/Issues/iss184_w.htm
2024-04-01 10:24:07 +02:00

137 lines
10 KiB
HTML

<!-- Common Lisp HyperSpec (TM), version 7.0 generated by Kent M. Pitman on Mon, 11-Apr-2005 2:31am EDT -->
<HTML>
<HEAD>
<TITLE>CLHS: Issue GET-MACRO-CHARACTER-READTABLE Writeup</TITLE>
<LINK HREF="../Data/clhs.css" REL="stylesheet" TYPE="text/css" />
<META HTTP-EQUIV="Author" CONTENT="Kent M. Pitman">
<META HTTP-EQUIV="Organization" CONTENT="LispWorks Ltd.">
<LINK REL=TOP HREF="../Front/index.htm">
<LINK REL=COPYRIGHT HREF="../Front/Help.htm#Legal">
<LINK REL=DISCLAIMER HREF="../Front/Help.htm#Disclaimer">
<LINK REL=PREV HREF="../Issues/iss183_w.htm">
<LINK REL=UP HREF="../Issues/iss184.htm">
<LINK REL=NEXT HREF="../Issues/iss185_w.htm">
</HEAD>
<BODY>
<H1><A REV=MADE HREF="http://www.lispworks.com/"><IMG WIDTH=80 HEIGHT=65 ALT="[LISPWORKS]" SRC="../Graphics/LWSmall.gif" ALIGN=Bottom></A><A REL=TOP HREF="../Front/index.htm"><IMG WIDTH=237 HEIGHT=65 ALT="[Common Lisp HyperSpec (TM)]" SRC="../Graphics/CLHS_Sm.gif" ALIGN=Bottom></A> <A REL=PREV HREF="../Issues/iss183_w.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Previous]" SRC="../Graphics/Prev.gif" ALIGN=Bottom></A><A REL=UP HREF="../Issues/iss184.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Up]" SRC="../Graphics/Up.gif" ALIGN=Bottom></A><A REL=NEXT HREF="../Issues/iss185_w.htm"><IMG WIDTH=40 HEIGHT=40 ALT="[Next]" SRC="../Graphics/Next.gif" ALIGN=Bottom></A></H1>
<HR>
<H2>Issue GET-MACRO-CHARACTER-READTABLE Writeup</H2>
<PRE><B>Status:</B> Passed, Jan 89 X3J13<P>
<B>Forum:</B> Cleanup<P>
<B>Issue:</B> <A HREF="iss184.htm">GET-MACRO-CHARACTER-READTABLE</A><P>
<P>
<B>References:</B> CLtL p.361: <A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>COPY-READTABLE</B></A>, <A REL=DEFINITION HREF="../Body/f_set_sy.htm#set-syntax-from-char"><B>SET-SYNTAX-FROM-CHAR</B></A>, and<P>
<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A><P>
CLtL p.364: <A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>GET-DISPATCH-MACRO-CHARACTER</B></A>, <P>
CLtL p.378: Example in middle of page<P>
<P>
<B>Category:</B> CLARIFICATION/CHANGE<P>
<P>
<B>Edit history:</B> Version 1, 16-Nov-88, by JonL<P>
Version 2, 8-Dec-88, by Masinter (fix typo)<P>
Version 3, 11-Feb-89, as amended Jan 89 X3J13<P>
<P>
<P>
<B>Problem description:<P>
</B><P>
The '<A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A>' argument to <A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>GET-DISPATCH-MACRO-CHARACTER</B></A> and to<P>
<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A> must be of type <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>READTABLE</B></A>, without mention of<P>
what happens when <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>NIL</B></A> is supplied. This may have been simply<P>
an oversight, since it makes more sense for it to refer to values from<P>
the <A REL=DEFINITION HREF="../Body/07_ffb.htm#standard"><B>standard</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A>. Both <A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>COPY-READTABLE</B></A> and <A REL=DEFINITION HREF="../Body/f_set_sy.htm#set-syntax-from-char"><B>SET-SYNTAX-FROM-CHAR</B></A><P>
explicitly say that a <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>NIL</B></A> in the 'from-readtable' argument refers to the<P>
<A REL=DEFINITION HREF="../Body/07_ffb.htm#standard"><B>standard</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A>. Also, an example in the middle of the page, CLtL<P>
p.378, supplies a <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>NIL</B></A> to <A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A>, and is clearly intending<P>
to access the <A REL=DEFINITION HREF="../Body/07_ffb.htm#standard"><B>standard</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A> values.<P>
<P>
<P>
Proposal (<A HREF="iss184.htm">GET-MACRO-CHARACTER-READTABLE:NIL-STANDARD</A>)<P>
<P>
Specify that a <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>NIL</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A> argument to <A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>GET-DISPATCH-MACRO-CHARACTER</B></A><P>
and to <A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A> mean the same thing it does for <A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>COPY-READTABLE</B></A>,<P>
and SET-SYNTAX-FROM-CHAR; namely a reference to the <A REL=DEFINITION HREF="../Body/07_ffb.htm#standard"><B>standard</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A>. <P>
Thus (<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A> &lt;char&gt; <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>NIL</B></A>) would be equivalent to <P>
(<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>GET-MACRO-CHARACTER</B></A> &lt;char&gt; (<A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>COPY-READTABLE</B></A>)), but without consing.<P>
<P>
<B>Rationale:<P>
</B><P>
Probably was the original intent; somebody wants it; also see &quot;Esthetics&quot;.<P>
<P>
<B>Current practice:<P>
</B><P>
Symbolics and Xerox have already implemented the proposal; Lucid, VAXLISP,<P>
and KCL stuck to the more rigid interpretation.<P>
<P>
<P>
<B>Cost to Implementors:<P>
</B><P>
Trivial.<P>
<P>
<B>Cost to Users:<P>
</B><P>
None.<P>
<P>
<B>Cost of non-adoption:<P>
</B><P>
Minor worry about porting between implementations that support the<P>
generalization and those that don't; minor worry about consing when<P>
calling (<A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>COPY-READTABLE</B></A>) to get at <A REL=DEFINITION HREF="../Body/07_ffb.htm#standard"><B>standard</B></A> <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A> semantics.<P>
<P>
<B>Performance impact:<P>
</B><P>
See &quot;Cost of non-adoption&quot;.<P>
<P>
<B>Benefits:<P>
</B><P>
See &quot;Cost of non-adoption&quot;.<P>
<P>
<B>Esthetics:<P>
</B><P>
Increases parallel design among similar <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A> functions.<P>
<P>
<B>Discussion:<P>
</B><P>
This question was raised in the Common Lisp mailing last summer:<P>
Date: 19 Jul 88 13:35<P>
Subject: Question about <A REL=DEFINITION HREF="../Body/t_rdtabl.htm#readtable"><B>readtable</B></A> null arguments<P>
From: quiroz%cs.rochester:EDU:Xerox<P>
To: common-lisp%sail.stanford:EDU:Xerox<P>
<P>
This issue passed at the Jan 89 X3J13 meeting. The only<P>
difference between version 2 and 3 was to remove the<P>
<B>test case because of problems of &quot;function equivalence&quot;:<P>
</B><P>
If &quot;same-function-p&quot; compared functions:<P>
<P>
(<A REL=DEFINITION HREF="../Body/s_let_l.htm#let"><B>let</B></A> ((standard-rt (<A REL=DEFINITION HREF="../Body/f_cp_rdt.htm#copy-readtable"><B>copy-readtable</B></A>))<P>
(chars '(#\* #\= #\| #\A #\ #\( #\# #\1)))<P>
;; Test Case 1<P>
(<A REL=DEFINITION HREF="../Body/m_dolist.htm#dolist"><B>dolist</B></A> (<A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> chars)<P>
(<A REL=DEFINITION HREF="../Body/m_assert.htm#assert"><B>assert</B></A> (same-function-p (<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>get-macro-character</B></A> <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>nil</B></A>)<P>
(<A REL=DEFINITION HREF="../Body/f_set_ma.htm#get-macro-character"><B>get-macro-character</B></A> <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> standard-rt))<P>
() &quot;Lose on <A REL=DEFINITION HREF="../Body/a_ch.htm#character"><B>character</B></A> ~C&quot; <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A>))<P>
;; Test Case 2<P>
(<A REL=DEFINITION HREF="../Body/m_dolist.htm#dolist"><B>dolist</B></A> (<A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> chars)<P>
(<A REL=DEFINITION HREF="../Body/m_assert.htm#assert"><B>assert</B></A> (same-function-p (<A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>get-dispatch-macro-character</B></A> #\# <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>nil</B></A>)<P>
(<A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>get-dispatch-macro-character</B></A> #\# <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A> standard-rt))<P>
() &quot;Lose on #\# dispatch <A REL=DEFINITION HREF="../Body/a_ch.htm#character"><B>character</B></A> ~C&quot; <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A>))<P>
;; Test Case 3<P>
(<A REL=DEFINITION HREF="../Body/m_assert.htm#assert"><B>assert</B></A> (same-function-p (<A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>get-dispatch-macro-character</B></A> #\# #\A <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>nil</B></A>)<P>
(<A REL=DEFINITION HREF="../Body/f_set__1.htm#get-dispatch-macro-character"><B>get-dispatch-macro-character</B></A> #\# #\a <A REL=DEFINITION HREF="../Body/a_nil.htm#nil"><B>nil</B></A>))<P>
() &quot;Lose on #\# dispatch <A REL=DEFINITION HREF="../Body/a_ch.htm#character"><B>character</B></A> ~C&quot; <A REL=DEFINITION HREF="../Body/f_char_.htm#char"><B>char</B></A>)<P>
)<P>
<P>
<P>
</PRE>
<HR>
<A REL=NAVIGATOR HREF="../Front/StartPts.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Starting Points]" SRC="../Graphics/StartPts.gif" ALIGN=Bottom></A><A REL=TOC HREF="../Front/Contents.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Contents]" SRC="../Graphics/Contents.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Master.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Index]" SRC="../Graphics/Index.gif" ALIGN=Bottom></A><A REL=INDEX HREF="../Front/X_Symbol.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Symbols]" SRC="../Graphics/Symbols.gif" ALIGN=Bottom></A><A REL=GLOSSARY HREF="../Body/26_a.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Glossary]" SRC="../Graphics/Glossary.gif" ALIGN=Bottom></A><A HREF="../Front/X3J13Iss.htm"><IMG WIDTH=80 HEIGHT=40 ALT="[Issues]" SRC="../Graphics/Issues.gif" ALIGN=Bottom></A><BR>
<A REL=COPYRIGHT HREF="../Front/Help.htm#Legal"><I>Copyright 1996-2005, LispWorks Ltd. All rights reserved.</I></A><P>
</BODY>
</HTML>