<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Feb 13, 2014, at 2:56 PM, Vincent St-Amour wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div>At Thu, 13 Feb 2014 14:45:08 -0500,<br>Bloch Stephen wrote:<br><blockquote type="cite">Don't tell me the Zero I'm running into is the initial value of<br></blockquote><blockquote type="cite">for/sum's hidden accumulator....<br></blockquote><br>Yes, that's where the Zero comes from.<br><br><blockquote type="cite">And even if there were a zero, shouldn't Zero be a subtype of Flonum?<br></blockquote><br>Zero is the type of the exact integer 0, but the Flonum type only<br>includes floating-point numbers. The two are not related by subtyping.<br></div></blockquote><div><br></div>Yes, actually I figured that part out... but why is the accumulator initialized to something that might be the wrong type?</div><div><br><blockquote type="cite"><div>You can use `assert' to check, at run-time, that you do always get a<br>Flonum:<br><br>    (assert (for/sum: : Real [[ii : Index 300]]<br>              pi)<br>            flonum?)<br><br>This expression typechecks at type Flonum.<br></div></blockquote></div><br><div>Hmm.  So just changing the annotation type from Flonum to Real does the trick?</div><div><br></div><div>for/sum: initializes its accumulator to an exact 0, which is of type Zero, which is a subtype of Real but not of Flonum.</div><div>It then adds pi, which is a Flonum, which is also a subtype of Real, and it has no problem proving the answer to be a Real (just not a Flonum).  Even though AFAIK anything plus a Flonum produces either a Flonum or an error.</div><div><br></div><div>I'm so confused....</div><div><br></div><div>Anyway, thanks!</div><br><br><div>
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; font-size: medium; "><span class="Apple-style-span" style="border-collapse: separate; 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; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>Stephen Bloch</div><div><a href="mailto:sbloch@adelphi.edu">sbloch@adelphi.edu</a></div></div></span>GPG  key at <a href="http://adelphi.edu/sbloch/sbloch.pubkey.asc">http://adelphi.edu/sbloch/sbloch.pubkey.asc</a></span>
</div>
<br></body></html>