(define-syntax for (syntax-rules (:) [(_ (init : test : update) body ...) (begin init (let loop () (if test (begin body ... update (loop)))))])) (define-syntax return-first (syntax-rules () [(_) (begin)] [(_ e1 e2 ...) (let ([temp e1]) e2 ... temp)]))