<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 18, 2009, at 5:46 PM, Ron Garret wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Oct 18, 2009, at 4:26 AM, Taoufik Dachraoui wrote:</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div><br></div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>In the CL specs </div><div><br></div><div><div><span class="Apple-style-span" style="font-family: Times; "><b><font class="Apple-style-span" face="Helvetica"><span class="Apple-style-span" style="font-weight: normal; ">"</span></font><a rel="DEFINITION" href="file:///usr/local/doc/HyperSpec/Body/s_the.htm#the">the</a></b> specifies that the <a rel="DEFINITION" href="file:///usr/local/doc/HyperSpec/Body/26_glo_v.htm#value"><i>values</i></a>[1a] returned by <i>form</i> are of the <a rel="DEFINITION" href="file:///usr/local/doc/HyperSpec/Body/26_glo_t.htm#type"><i>types</i></a> specified by <i>value-type</i>. </span></div><div><span class="Apple-style-span" style="font-family: Times; ">The consequences are undefined if any <i>result</i> is not of the declared type."</span></div></div><div><br></div><div>It is clear that (THE type expr)  specifies the the returned value of expr is of type type.</div><div><br></div></div></blockquote><div><br></div><div>No, this is not clear.  The only thing that is clear is just what it says, that if the result is not of the declared type then the consequences are undefined.  In CCL, for example:</div><div><br></div></div></div></blockquote>Where do you see "not of the declared"?</div></div></div></div></blockquote><div><br></div><div>I believe you meant to ask: where do you see, "Not of the declared TYPE". </div><div><br></div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Where do you see declared the in the specs?</div></blockquote><div><br></div><div>That is not a grammatically correct English sentence.  But I'm going to guess that you meant to write: Where do you see "declared" in the specs?</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I see "values returned by form".</div></blockquote><div><br></div><div>That's in the first sentence.  Do you see that there is a second sentence?  What are the last five words in that second sentence?</div></div></div></div></blockquote><div>The issue is before "consequences are undefined".</div><div>My understanding of the specs for (THE TYPE FORM), one more time, is:</div><div>if the types of the returned values of FORM is consistant with TYPE then return the values</div><div>if not then "the consequences are undefined".</div><div><br></div><div>So in the first then; just before compiling (THE TYPE FORM), if FORM is a valid</div><div>expression and returns valid values, and if the values are of typeTYPE, it seems</div><div>not correct to raise a warning. So if the compiler raises a warning it is the problem of</div><div>the compiler, or it is the problem of the hack with SETF. </div><div><br></div><div>I understood what you explained and what Raffael put clearly. The issue is this, now that </div><div>I start to understand what is going on:</div><div><br></div><div>In the specs it is said that there is three kinds of variables: lexical, dynamic and constant,</div><div>and this is the problem, it seems that the hash on SETF creates a variable that is neither</div><div>lexical, nor dynamic nor constant (as show in previous submissions); So the question</div><div>is what is the rational behind this hack? why the hack did not create a dynamic variable as in CMUCL?</div><div><br></div><div><br></div><div><br></div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>I believe that you missunderstood my concern,</div></div></div></div></blockquote><div><br></div><div>I'm pretty sure that's not the problem.</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>I may be wrong</div><div>and I may be right, clear, precise and correct answers may convince me.</div></div></div></div></blockquote><div><br></div><div>I've been as clear and precise as I know how to be.  You, however, are being sloppy and lazy.  Did you read the paper that I pointed you to?  No, you did not, because if you did you would know the answers to some of the questions that you continue to ask.</div><div><br></div></div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><font class="Apple-style-span" color="#144FAE"><br></font><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Again the example:</div><div><br></div><div><div>? (setf z 1)</div><div>1</div><div>? (the fixnum z)</div><div>;Compiler warnings :</div><div>;   In an anonymous lambda form: Undeclared free variable Z</div><div>1</div><div>? z</div><div>1</div><div>? (the fixnum 1)</div><div>1</div><div>?</div><div><br></div><div>As you can see, after the SETF z has a value of 1 and (THE fixnum 1) does not raise a </div><div>warning but  (THE fixnum z) does, this means to me that the THE operator does not </div><div>merely uses the returned value of z but has something too say about z, and this is wrong</div><div>I believe.</div></div></div></blockquote><div><br></div><div>The exact same thing happens with other operators:</div><div><br></div></div></div></blockquote>But do you agree that the z defined by SETF is a lexical variable?</div><div><br></div></div></div></div></blockquote><div><br></div><div>No.  Z is not defined by SETF.  SETF doesn't define anything.  The fact that CCL creates a place for you when you use SETF on a symbol that has not been defined is a hack for the sake of convenience.  It is not behavior that is defined by the standard.</div><br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>? (setf x 1)</div><div>1</div><div>? ((lambda () x))</div><div>;Compiler warnings :</div><div>;   In an anonymous lambda form: Undeclared free variable X</div><div>1</div><div>? ((lambda () 1))</div><div>1</div><div>? (let ((y x)) y)</div><div>;Compiler warnings :</div><div>;   In an anonymous lambda form: Undeclared free variable X</div><div>1</div><div>? (let ((y 1)) y)</div><div>1</div><div><br></div><div><br></div><div>It has nothing to do with THE, it has to do with whether a reference to an undeclared free variable is passed to the compiler, which is what generates these warnings.  Again: this has nothing to do with THE -- except insofar as THE is one construct (among many) that causes the compiler to be invoked.</div><div><br></div></div></div></div></blockquote>It remains that the THE operator as implemented does not follow the specs.</div><div><br></div></div></div></div></blockquote><br></div><div>No.  You are completely and utterly mistaken, and if you keep saying that there is something wrong with "THE" then everyone will eventually write you off as a troll and an idiot.</div><div><br></div><div>Now go do your homework.</div><div><br></div><div>rg</div><div><br></div></div></blockquote></div><br></body></html>