Rewrote do: to expand into do.

This commit is contained in:
Vincent St-Amour 2010-05-26 18:08:40 -04:00
parent 7442f14305
commit 23f30af459

View File

@ -368,15 +368,15 @@ This file defines two sorts of primitives. All of them are provided into any mod
(define-syntax (do: stx) (define-syntax (do: stx)
(syntax-parse stx #:literals (:) (syntax-parse stx #:literals (:)
[(_ : ty [(_ : ty
((var:annotated-name init (~optional step:expr #:defaults ([step #'var]))) ...) ((var:annotated-name rest ...) ...)
(stop?:expr (~optional (~seq finish0:expr finish:expr ...) #:defaults ([finish0 #'(void)] [(finish 1) '()]))) (stop?:expr ret ...)
c:expr ...) c:expr ...)
(syntax/loc (syntax/loc
stx stx
(let: doloop : ty ([var.name : var.ty init] ...) (ann (do ((var.ann-name rest ...) ...)
(if stop? (stop? ret ...)
(begin finish0 finish ...) c ...)
(begin c ... (doloop step ...)))))])) ty))]))
(define-syntax (provide: stx) (define-syntax (provide: stx)
(syntax-parse stx (syntax-parse stx