X-Git-Url: https://git.rkrishnan.org/?p=sicp.git;a=blobdiff_plain;f=src%2Fsicp%2Fex4_27.rkt;fp=src%2Fsicp%2Fex4_27.rkt;h=60139581a0361d06dda1fb396aa0da5cd47d195e;hp=0000000000000000000000000000000000000000;hb=c6a6e187ad34b393587f51d181e2751f82f41aff;hpb=185aeca90595562fd31b2cdb730a12488d155348 diff --git a/src/sicp/ex4_27.rkt b/src/sicp/ex4_27.rkt new file mode 100644 index 0000000..6013958 --- /dev/null +++ b/src/sicp/ex4_27.rkt @@ -0,0 +1,38 @@ +#lang racket + +(require "metacircular2-lazy.rkt") + +(define env1 (make-environment)) +(eval '(define count 0) env1) +(eval '(define (id x) (set! count (+ count 1)) x) env1) + +#| + +> (eval '(define w (id (id 0))) env1) +> (eval 'count env1) +1 +> (eval 'w env1) +#0='(thunk + (id 0) + #1=(#hash((< . (primitive #)) + (* . (primitive #)) + (> . (primitive #>)) + (- . (primitive #)) + (= . (primitive #)) + (true . #t) + (+ . (primitive #)) + (list . (primitive #)) + (null? . (primitive #)) + (/ . (primitive #)) + (car . (primitive #)) + (false . #f) + (cdr . (primitive #)) + (cons . (primitive #)) + (count . 1) + (id . (procedure (x) ((set! count (+ count 1)) x) #1#)) + (w . #0#)))) +> (eval 'count env1) +1 +> + +|# \ No newline at end of file