On Feb 13, 2014, at 2:51 PM, Sam Tobin-Hochstadt wrote:

>> (for/sum: : Flonum [[ii : Index 300]]
>>  pi)
>> 
>> and I get the type error "Expected Flonum, but got Zero".  Where is there a
>> zero anywhere in this code?  And even if there were a zero, shouldn't Zero
>> be a subtype of Flonum?
>> 
>> Don't tell me the Zero I'm running into is the initial value of for/sum's
>> hidden accumulator....
> 
> Unfortunately, that's exactly what I'm going to tell you.  Typed
> Racket isn't smart enough to know that the initial value is never
> used, and so 0 is thought to be a possibility.

Doesn't that make for/sum: useless for anything other than exact integers?

Couldn't for/sum: initialize its accumulator to a Real-Zero rather than the 
overly-specified type Zero?  (That would rule out complexes, but it would be a 
big step in the right direction.)  (Should there be a Complex-Zero type?)

Even better, could for/sum: look at the annotation type and decide what initial 
value (0 or #i0.0) to use?

> I recommend using `for/fold` for this case as a workaround.

OK, I'll try that.


Stephen Bloch
sbl...@adelphi.edu
GPG  key at http://adelphi.edu/sbloch/sbloch.pubkey.asc

Attachment: PGP.sig
Description: This is a digitally signed message part

____________________
  Racket Users list:
  http://lists.racket-lang.org/users

Reply via email to