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
