blob: 495cfabf18928c2e9123e6ab0accb64cfb460220 (
plain)
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
35
36
37
38
39
40
41
42
43
44
45
46
47
|
(define size 500000)
(define (f1 x)
(let ((y x))
(do ((j 0 (+ j 1)))
((= j 1))
(do ((i 0 (+ i 1)))
((= i size))
(let-temporarily ((y 32))
(if (not (= y 32))
(format *stderr* "temp y: ~A~%" y)))
(if (not (= y x))
(format *stderr* "y: ~A~%" y))))))
(f1 1)
(define-macro (m2 a b) `(+ ,a ,@b 1))
(define (f2)
(let ((x 2)
(y 0))
(do ((j 0 (+ j 1)))
((= j 1))
(do ((i 0 (+ i 1)))
((= i size))
(set! y (m2 x (x x)))
(if (not (= y (+ (* 3 x) 1)))
(format *stderr* "y: ~A~%" y))))))
(f2)
(define-expansion (m3 a b) `(+ ,a ,@b 1))
(define (f3)
(let ((x 2)
(y 0))
(do ((j 0 (+ j 1)))
((= j 1))
(do ((i 0 (+ i 1)))
((= i size))
(set! y (m3 x (x x)))
(if (not (= y (+ (* 3 x) 1)))
(format *stderr* "y: ~A~%" y))))))
(f3)
(exit)
|