<HTML><BODY style="word-wrap: break-word; -khtml-nbsp-mode: space; -khtml-line-break: after-white-space; "><BR><DIV><DIV>On 30 Oct 2006, at 15:37, Gary King wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><DIV>Hi Pascal,</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I thinking adding such a thing is a _good_ idea (we can add it to the new "standard")</DIV><DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>On Oct 30, 2006, at 7:40 AM, Pascal Costanza wrote:</DIV><BR class="Apple-interchange-newline"><BLOCKQUOTE type="cite"><SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV>I think it's a pity that the CLOS MOP doesn't just specify a constant for this. Maybe I should add this to Closer to MOP...</DIV><BR class="Apple-interchange-newline"></SPAN></BLOCKQUOTE></DIV><DIV><BR class="khtml-block-placeholder"></DIV></BLOCKQUOTE><BR></DIV><DIV>Hm, I have thought a little bit about this, and maybe it's not a good idea after all.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>It could be that the low-level machinery to detect unbound slots is actually part of the MMU, or some other element at the machine level. For example, in a machine that uses tagged values, unbound could be a configuration of tag bits. In that case, "the" unbound value would probably not exist as such. Something like slot-makunbound is then indeed a better abstraction for this.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>I am by far not an expert in hardware / cpu / mmu matters, so maybe what I am saying here is pure nonsense. On the other hand, I wouldn't be surprised if, say, Lisp Machines had some better way to deal with unbound variables than using a constant value to represent them. And I think we should leave the door open for such possible implementations...</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Having said that, almost all the implementations that I have checked seem to use some constant for unbound slots. The only one that seems to behave somewhat mysteriously is MCL.</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>An alternative to defining a constant for unbound slots would be to add explicit functions for reading and writing them. In the end, we should probably have the following set of functions:</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>standard-instance-access</DIV><DIV>(setf standard-instance-access)</DIV><DIV>standard-instance-boundp</DIV><DIV>standard-instance-makunbound</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>standard-class-access</DIV><DIV>(setf standard-class-access)</DIV><DIV>standard-class-boundp</DIV><DIV>standard-class-makunbound</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>funcallable-standard-instance-access</DIV><DIV>(setf funcallable-standard-instance-access)</DIV><DIV>funcallable-standard-instance-boundp</DIV><DIV>funcallable-standard-instance-makunbound</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>funcallable-standard-class-access</DIV><DIV>(setf funcallable-standard-class-access)</DIV><DIV>funcallable-standard-class-boundp</DIV><DIV>funcallable-standard-class-makunbound</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>The -class- versions would be there for slots with :allocation :class. (I don't know what parameters they would take, though. Probably just whatever slot-location returns, without specifying further what it is that slot-location returns for slots with :allocation :class...)</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Any comments?</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV>Pascal</DIV><BR><DIV> <SPAN class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; text-align: auto; -khtml-text-decorations-in-effect: none; text-indent: 0px; -apple-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><DIV>-- </DIV><DIV>Pascal Costanza, <A href="mailto:pc@p-cos.net">mailto:pc@p-cos.net</A>, <A href="http://p-cos.net">http://p-cos.net</A></DIV><DIV>Vrije Universiteit Brussel, Programming Technology Lab</DIV><DIV>Pleinlaan 2, B-1050 Brussel, Belgium</DIV><DIV><BR class="khtml-block-placeholder"></DIV><DIV><BR class="khtml-block-placeholder"></DIV><BR class="Apple-interchange-newline"></SPAN> </DIV><BR></BODY></HTML>