7 ms·
#lang racket (define (naive-for start end my-body) (let ([operator (if (< start end) + -)]) (my-body) (cond [(not (eq? start end)) (naive-for (opera
by codygman 14y ago
#lang racket
(define (naive-for start end my-body)
(let ([operator
(if (< start end) + -)])
(my-body)
(cond [(not (eq? start end)) (naive-for (operator start 1) end my-body)])))
(naive-for 1 -2 (lambda () (displayln "For loop? Who needs those!")))
- yoklov 14y agoClearly this calls for a macro (define-syntax naive-for (syntax-rules () [(naive-for start end body ...) (let ([op (if (< start end) + -)]) (let loop ([s start] [e end]) (begin body ...) (cond [(not (eq? s e)) (loop (op s 1) e)])))])) (naive-for 1 -2 (displayln "Lambda? What lambda?"))
- codygman 14y agoThank you! I haven't gotten to macros yet, but I can see they are very straight-forward!