]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/ex4_27.rkt
Solutions to 4.27, 4.28 and 4.29.
[sicp.git] / src / sicp / ex4_27.rkt
diff --git a/src/sicp/ex4_27.rkt b/src/sicp/ex4_27.rkt
new file mode 100644 (file)
index 0000000..6013958
--- /dev/null
@@ -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 #<procedure:<>))
+               (* . (primitive #<procedure:*>))
+               (> . (primitive #<procedure:>>))
+               (- . (primitive #<procedure:->))
+               (= . (primitive #<procedure:=>))
+               (true . #t)
+               (+ . (primitive #<procedure:+>))
+               (list . (primitive #<procedure:list>))
+               (null? . (primitive #<procedure:null?>))
+               (/ . (primitive #<procedure:/>))
+               (car . (primitive #<procedure:car>))
+               (false . #f)
+               (cdr . (primitive #<procedure:cdr>))
+               (cons . (primitive #<procedure:cons>))
+               (count . 1)
+               (id . (procedure (x) ((set! count (+ count 1)) x) #1#))
+               (w . #0#))))
+> (eval 'count env1)
+1
+> 
+
+|#
\ No newline at end of file