I've been converting a bunch of Python to Racket lately, and I have a lot of loops that use break and continue. I end up turning them into:
(let/ec break (for (...) (let/ec continue ; do some work (when this-iteration-isn't-what-i-want (continue)) ; do more expensive work (when found-what-i-want (break what-i-want))))) I thought it would be nice if the let/ec's could be integrated with for, so that you could instead write: (for (#:ec break ... #:ec continue) ; ...same as above... In an attempt to help convey the behavior I want, I threw this patch together: https://github.com/jkominek/racket/commit/b291a0b994c679445b3210bd3efba8c6cea867e4 I feel it behaves reasonably when using for and for/fold, but for/list doesn't behave in any way I'd hope for. Ideally somebody who understands for's implementation will agree that this is a great idea, and go make it all work nicely. :) Failing that I'm open to suggestions for how to make it behave better, in a fashion which would make it appropriate for inclusion. -- Jay Kominek _________________________ Racket Developers list: http://lists.racket-lang.org/dev