2009/9/4 Aubrey Jaffer <[email protected]>:
> evaluation. Thus, LET, LETREC, DO, and procedure calls would allow
> concurrent evaluation, while LET* and LETREC* would require serial
> execution.
I would not want to be the person deciding of the semantics of
====START/THIS====
(define kont #f)
(define p (cons 0 0))
(define (inc!-car p)
(set-car! p (+ (car p) 1))
p)
(let ((x (call/cc
(lambda (k)
(set! kont k)
1)))
(y (inc!-car p)))
(display y)
(newline)
(kont 'what?))
====END/THIS====
and
====START/THAT====
(define kont #f)
(define p (cons 0 0))
(define (inc!-car p)
(set-car! p (+ (car p) 1))
p)
(let ((y (inc!-car p))
(x (call/cc
(lambda (k)
(set! kont k)
1))))
(display y)
(newline)
(kont 'what?))
====END/THAT====
I foresee discussions dealing with call/cc and concurrent evaluation.
I haven't spent much time thinking about it, but one could want the
call of kont to respawn the computations of y, while another may
expect it to go to the rendez-vous when x and y are bound, and a third
person may want to reevaluate only those next in the order decided by
the implementation to spawn the concurrent evaluations.
I am strongly in favor of parallelism/concurrency in Thing One, I
quite dislike "undefined behaviours", but I wonder how well it fits
the expectations of the mathematically versed designers.
P!
--
Français, English, 日本語, 한국어
_______________________________________________
r6rs-discuss mailing list
[email protected]
http://lists.r6rs.org/cgi-bin/mailman/listinfo/r6rs-discuss