<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi<div><br></div><div>I am writing here because this may be the place closest to some of the issue I would like to raise (slowly!) with some of the typing issues in CL.</div><div><br></div><div>Consider the following (contrived) example</div><div><br></div><div><div><font class="Apple-style-span" face="'Courier New'">(defstruct node</font></div><div><font class="Apple-style-span" face="'Courier New'">  content</font></div><div><font class="Apple-style-span" face="'Courier New'">  (left nil :type (or null arc))</font></div><div><font class="Apple-style-span" face="'Courier New'">  (right nil :type (or null arc)))</font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'"><br></font></div><div><font class="Apple-style-span" face="'Courier New'">(defstruct arc</font></div><div><font class="Apple-style-span" face="'Courier New'">  (source nil :type (or null node))</font></div><div><font class="Apple-style-span" face="'Courier New'">  (sink nil :type (or null node)))</font></div><div><br></div><div>At least on LW, compiling the snippet the first time raises the following warning</div><div><div><br></div><div><font class="Apple-style-span" face="'Courier New'">; (SUBFUNCTION MAKE-NODE (DEFSTRUCT NODE))</font></div><div><font class="Apple-style-span" face="'Courier New'">;;;*** Warning in (SUBFUNCTION MAKE-NODE (STRUCTURE NODE)): Ignoring type declaration with illegal type (OR NULL ARC)</font></div><div><font class="Apple-style-span" face="'Courier New'">;;;*** Warning in (SUBFUNCTION MAKE-NODE (STRUCTURE NODE)): Ignoring type declaration with illegal type (OR NULL ARC)</font></div><div><br></div><div>There seem to be no way in CL to make a "forward" type declaration.  So, the questions I raise are two.</div><div>1 - which would be the best forum (<font class="Apple-style-span" face="'Courier New'">:if-exists :use-it :if-does-not-exist :do-not-use-c.l.l.-yet</font>) where to have this discussion?</div><div>2 - where would you look in the ANSI spec for places where various clauses needs to be changed or removed to make recursive types "CDR-able"?</div><div><br></div><div>Cheers</div><div>--</div><div>Marco</div><div><br></div></div><div><br></div></div><div><div apple-content-edited="true"><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; "><br class="Apple-interchange-newline"></span> </div><br></div></body></html>