]> git.rkrishnan.org Git - sicp.git/blob - src/sicp/ex4_27.rkt
Solutions to 4.27, 4.28 and 4.29.
[sicp.git] / src / sicp / ex4_27.rkt
1 #lang racket
2
3 (require "metacircular2-lazy.rkt")
4
5 (define env1 (make-environment))
6 (eval '(define count 0) env1)
7 (eval '(define (id x) (set! count (+ count 1)) x) env1)
8
9 #|
10
11 > (eval '(define w (id (id 0))) env1)
12 > (eval 'count env1)
13 1
14 > (eval 'w env1)
15 #0='(thunk
16      (id 0)
17      #1=(#hash((< . (primitive #<procedure:<>))
18                (* . (primitive #<procedure:*>))
19                (> . (primitive #<procedure:>>))
20                (- . (primitive #<procedure:->))
21                (= . (primitive #<procedure:=>))
22                (true . #t)
23                (+ . (primitive #<procedure:+>))
24                (list . (primitive #<procedure:list>))
25                (null? . (primitive #<procedure:null?>))
26                (/ . (primitive #<procedure:/>))
27                (car . (primitive #<procedure:car>))
28                (false . #f)
29                (cdr . (primitive #<procedure:cdr>))
30                (cons . (primitive #<procedure:cons>))
31                (count . 1)
32                (id . (procedure (x) ((set! count (+ count 1)) x) #1#))
33                (w . #0#))))
34 > (eval 'count env1)
35 1
36
37
38 |#