[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Issue: HASH-TABLE-PRINTED-REPRESENTATION (Version 2)



My notes from Fairfax meeting...

Cleanup meeting:

 JonL says he'll get Touretzky to do a writeup.

 Maybe expand to fix arrays for general case.

 Some people seemed to think there is some relation between this and
 a DUMP-FORMS facility. I think because you can print something with
 #. if you can figure out how to construct it. However, Touretzky had
 already indicated that grokking a #H expression is something a
 non-Lisp program might hope to do, while parsing a #. expression is 
 not -- so DUMP-FORMS is not the full answer. Still, such a facility
 might be a useful new topic to raise.

X3J13 meeting:

 JonL: One issue is that infinite printing might occur if circularities
       occur. [JonL said he doesn't believe this is reason not to do it,
       but he did want to raise the issue.]

 Haflich: Impact on #H in per-vendor extensions.

 Barmar: Need to modify the WRITE function to take a :PRINT-HASH argument.

 KMP: You mean :PRINT-HASH-TABLE. I want the variable called
      *PRINT-HASH-TABLE*, not *PRINT-HASH*.

 van Roggen: Not sure if it's possible to print enough information to
	     make re-reading the expression really construct an
	     equivalent object.

 GLS: The same could be said about other print representations, too, but
      there is at least a well-defined theory of how much you can expect
      out of print/read.

 van Roggen's position seemed to be that we might just want to provide
 *PRINT-HASH-TABLE* but not specify how the thing actually gets printed
 so it's not thought to be portable.

 I (KMP) made a note to myself that since #S(ARRAY ...) and 
 #S(HASH-TABLE ...) couldn't possibly be meaningful, one might define
 #S to be the generalized constructor for things other than structures.
 So #S(ARRAY ...) could be used to print arrays with attributes that
 would otherwise be lost. eg, #S(ARRAY :CONTENTS ... :FILL-POINTER ...).
 Similarly, #S(HASH-TABLE :CONTENTS ... :SIZE ...) for the cases where
 hairy options wanted to be shown. #A and the simpler #H notation could
 then be used unless some option variable were set that said to really
 print the full-blown info.