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

Reply via email to