On Jul 1, 2014, at 3:46 PM, Sam Tobin-Hochstadt <sa...@cs.indiana.edu> wrote:
> I disagree strongly that this is un-rackety. Consider the following loop: > > (define v ....) > (let loop ([i 100]) > (define e (vector-ref v i)) > (cond [(zero? i) null] > [(= 999 e) null] > [(even? e) (loop (add1 i))] > [else (cons e (loop add1 i))])) > > I don't think that's un-Rackety. > > Here's that loop with break/continue: > > (for/list ([i (in-range 100 0 -1)]) > (define e (vector-ref v i)) > (cond [(= 999 e) (break)] > [(even? e) (continue)] > [else e])) You don’t like the non-capturing alternative (for/list ([i (in-range 100 0 -1)] #:continue continue #:break break) (define e (vector-ref v i)) (cond [(= 999 e) (break)] [(even? e) (continue)] [else e])) ? Sorry, I’m working on implementing hygiene for Rust right now, and I’m kind of knee-jerk in favor of non-capturing…. John > > I don't think that's un-Rackety either. > > Sam > > On Tue, Jul 1, 2014 at 10:59 PM, Neil Van Dyke <n...@neilvandyke.org> wrote: >> If adding break&continue features to your fancy iteration syntax, I propose >> that any uses of these features in source code be somehow very prominent. >> >> For example, perhaps there is a keyword that must be at the top of the fancy >> iteration form, something like >> "#:enable-continue-here-because-programmer-cannot-be-bothered-to-write-this-in-idiomatic-racket". >> >> This prominence warns readers of the code to be on the lookout for surprise >> control flow (like they would on the rare occasion that they saw a "call/ec" >> around a loop). It also hints to newbie programmers that they are >> discouraged from simply transliterating syntax from other languages (rather >> than learning better control flow and structuring techniques). >> >> Neil V. >> >> >> _________________________ >> Racket Developers list: >> http://lists.racket-lang.org/dev >> > _________________________ > Racket Developers list: > http://lists.racket-lang.org/dev _________________________ Racket Developers list: http://lists.racket-lang.org/dev