Hi,

The example is probably not very good as (- (random 99) (random 99)) may 
return different things in different Schemes.

The goal of the mail was to show areas of the report where concurrency 
is not addressed in detail, namely concurrent-enabled let bindings (not 
addressed in R6RS), "sequential" let bindings (such as R6RS let with 
unspecified order of evaluation) and sequential and ordered lets such as 
let*.

Cheers,
Antonio


John Cowan escribió:
> Antonio Vieiro scripsit:
> 
>> In the example above you want *sequential* evaluation (so as not to mess
>> up with random internals, if those are not synchronized, becasue random
>> that has an internal state), but you can evaluate operands in any order
>> because '+' is commutative.
> 
> I'm going to highlight this not because I think you mean it, but because
> it's an easy slip of the mind to make.  The arguments to any function,
> whether commutative or associative or both or neither, can be evaluated
> in any order desired.  Those properties matter only when the called
> procedure actually *processes* its arguments.  Even if (- (a) (b))
> calls b before a, the - procedure will still return the right answer.
> 

_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss

Reply via email to