[plt-scheme] for.ss
On 9/20/07, Jens Axel Søgaard <jensaxel at soegaard.net> wrote:
Sorry for annoying everybody yet again, but I think I
> Do you have an example of the intended behaviour?
The following seems to work some of the time
(require (planet "42.ss" ("soegaard" "srfi.plt" 2 1)))
(define-generator (:nested stx)
(syntax-case stx ()
[(:nested (var ...) gen ...)
(with-syntax ([(tmp ...) (generate-temporaries #'(var ...))])
#'(:do (let-values ([(fun-in done-in tmp ...)
(let/cc ret
(do-ec gen ... (let/cc enter
(call-with-values (lambda () (values enter #f var ...)) ret)))
(call-with-values (lambda () (values #f
#t var ...)) ret))]))
((fun fun-in)(done done-in)(var tmp) ...)
(not done)
(let ())
#t
((fun))))]))
(list-ec (:while (:nested (a b) (: a 1 10) (: b 1 10) (if (= 1 (gcd a
b)))) (< (* a b) 50)) (list a b))
works, but
(list-ec (:while (:nested (a b) (: a 1 10) (: b 1 10) (if (= 1 (gcd a
b)))) #t) (list a b))
does not (it gives an "reference to undefined identifier: a" error).
I'm going to break out the macro expander to see what is going on.