This is the mail archive of the guile@cygnus.com mailing list for the guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: searching an explanation: call/cc and 'do' strangeness


Here's a very explicit version:

;;; A very simplistic version

(define to-walker #f)
(define to-user #f)

(define (scopeWalkDemo3)
  (call/cc (lambda (c)
	     (to-user c)))
  (let ((l (list 'cow 'horse 'pig )))
    (do ((i 0 (+ i 1)))
	((= i (length l)))
      (call/cc (lambda (c)
		 (set! to-walker c)
		 (to-user (list-ref l i)))))))

(define (test3)
  (set! to-walker
	(call/cc (lambda (c)
		   (set! to-user c)
		   (scopeWalkDemo3))))
  (do ((j 0 (1+ j))
       (tmp #f))
      ((>= j 3))
    (write-line (list j v-demo))
    (set! tmp (call/cc (lambda (c)
			 (set! to-user c)
			 (to-walker #f))))
    (vector-set! v-demo j tmp)))