]> git.rkrishnan.org Git - sicp.git/blobdiff - src/sicp/metacircular2-lazy.rkt
Solution to 4.30. Extremely enlightening!
[sicp.git] / src / sicp / metacircular2-lazy.rkt
index b41ab4bae60c3eba689ca2f9ae59341f345d8f71..5e036ee8e3f75dea131396188a6a48b6fbc5fc26 100644 (file)
@@ -97,7 +97,9 @@
         (list '/ /)
         (list '= =)
         (list '> >)
-        (list '< <)))
+        (list '< <)
+        (list 'newline newline)
+        (list 'display display)))
 
 (define (primitive-procedure-names)
   (map car primitive-procedures))
 (define (procedure-environment p) (cadddr p))
 
 (define (apply procedure arguments env)
+  ;;(display (format "~s~%" arguments))
   (match procedure
     [`(primitive ,f ...)  (apply-primitive-procedure procedure (list-of-arg-values arguments env))]
     [`(procedure ,f ...)  (eval-sequence
 
 ;; thunks
 (define (actual-value exp env)
+  ;(display (format "eval expr ~s~%" exp))
+  ;(newline)
   (force-it (eval exp env)))
 
 (define (force-it obj)
+  ;; (display (format "~s~%" obj))
   (match obj
-    [`(thunk ,exp ,env) (actual-value exp env)]
+    [`(thunk ,exp ,env) (begin
+                          ;(display (format "eval's output ~s~%" obj))
+                          ;(newline)
+                          (actual-value exp env))]
     [_ obj]))
 
 (define (delay-it exp env)