blob: 063e4a38b53702419cb162a2420d2e53f074f291 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
(define do
(macro (vars test . cmds)
(define (_step v)
(if (null? v)
'()
(if (null? (cddr (car v)))
(_step (cdr v))
(cons `(set! ,(caar v) ,(caddr (car v)))
(_step (cdr v))
)
)
)
)
`(let ,(map (lambda (v) (list (car v) (cadr v))) vars)
(while (not ,(car test))
,@cmds
,@(_step vars)
)
,@(cdr test)
)
)
)
(do ((x 1 (+ x 1)))
((= x 10) "done")
(display "x: ")
(write x)
(newline)
)
(do ((vec (make-vector 5))
(i 0 (+ i 1)))
((= i 5) vec)
(vector-set! vec i i))
|