<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Aug 3, 2015 at 10:12 PM, Peter Stirling <span dir="ltr"><<a href="mailto:peter@pjstirling.plus.com" target="_blank">peter@pjstirling.plus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div bgcolor="#FFFFFF" text="#000000">
<div>My read of the spec is that either
behaviour is allowable.<br>
<br></div></div></blockquote><div><br>The two behaviors are so different that I have a hard time accepting this.<br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
<br>
I guess they didn't think about people using closures for
initforms when they were drawing it up?<br>
<br></div></div></blockquote><div><br>Yet they clearly thought about closures when they specified DEFCLASS[3] (see the part where<br>processing of :initform form is mentioned). So, was this really just simple oversight?<br><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div bgcolor="#FFFFFF" text="#000000"><div>
To side-step the issue I would invoke a closure from the initform
instead (if that's how you want to do it).<br>
<br></div></div></blockquote><div><br></div><div>This is indeed probably the proper workaround that would assure portability<br>across CL implementation.<br><br>But I find sad that we'd have to force defstruct to be a top-level only form<br></div><div>with this workaround instead of letting perfectly normal language constructs intermix<br></div><div>freely as the problem would find appropriate and natural.<br><br></div><div>My interest here is that I am reworking the implementation of the DEFSTRUCT macro in MKCL.<br></div><div>And honestly I am of the opinion that there is a pretty strong case to be made in favor<br></div><div>of the clisp behavior on this issue. But I cannot figure out the justification for the other<br></div><div>behavior illustrated by almost all of the other implementations. Is this just some long<br></div><div>standing historical quirk at play here or is there really a reason for this way of doing it?<br><br><br></div><div>[3] <a href="http://www.lispworks.com/documentation/HyperSpec/Body/m_defcla.htm">http://www.lispworks.com/documentation/HyperSpec/Body/m_defcla.htm</a><br></div><div><br> </div><br></div></div></div>