<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div>The following program is (I believe) technically wrong.</div><div><br></div><div>for(1..3)do{</div><div>   print(5)</div><div>}</div><div><br></div><div>It should require an index variable and arrow after "{".  Minigrace allows this and does the intuitive thing (print "5" 3 times).  Not surprisingly if the body depends on an undeclared index variable then it chokes.</div><div><br></div><div>The spec (section 9.1) illustrates only the version with the index variable and arrow.  Should we consider the above an error in minigrace (and fix minigrace to report it as such) or do we want to admit it when the body does not depend on the index variable.  I lean toward considering this to be an error, but could be convinced otherwise.</div><div><br></div><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px;"><div>Kim</div><div><br></div></span></div><div>P.S.  In my previous e-mail I was concerned about not being able to access "for" with an "outer" prefix.  The spec seems to indicate that should have been possible.  Here is verbiage from section 9.1 of the spec.</div><div><br></div><div>
                
        
        
                <div class="page" title="Page 22">
                        <div class="layoutArea">
                                <div class="column"><p><span style="font-size: 11.000000pt; font-family: 'SFBX1095'">For statement:
</span></p><p><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">for (collection) do {item </span><span style="font-size: 11.000000pt; font-family: 'CMSY10'">−</span><span style="font-size: 11.000000pt; font-family: 'CMMI10'">> </span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">block body}
</span></p><p><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">for (course.students) do { s:Student </span><span style="font-size: 11.000000pt; font-family: 'CMSY10'">−</span><span style="font-size: 11.000000pt; font-family: 'CMMI10'">> </span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">print s }
</span></p><p><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">for (0..n) do { i </span><span style="font-size: 11.000000pt; font-family: 'CMSY10'">−</span><span style="font-size: 11.000000pt; font-family: 'CMMI10'">> </span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">print i }
</span></p><p><span style="font-size: 11.000000pt; font-family: 'SFRM1095'">To allow for conventional syntax with a leading keyword (</span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">if</span><span style="font-size: 11.000000pt; font-family: 'SFRM1095'">, </span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">while</span><span style="font-size: 11.000000pt; font-family: 'SFRM1095'">, </span><span style="font-size: 11.000000pt; font-family: 'SFSS1095'">for</span><span style="font-size: 11.000000pt; font-family: 'SFRM1095'">,
etc.), these methods are treated as if they are sent to </span><span style="font-size: 11.000000pt; font-family: 'SFSX1095'">outer</span><span style="font-size: 11.000000pt; font-family: 'SFRM1095'">. Methods defined
in a dialect are treated as if they are defined on an outer-level enclosing
object. </span><span style="font-size: 10.000000pt; font-family: 'MSAM10'"> </span></p>
                                </div>
                        </div>
                </div></div>
<br></body></html>