X-Git-Url: https://git.rkrishnan.org/?a=blobdiff_plain;f=src%2Fsicp%2Fmetacircular2-test.rkt;h=a4c23ea231a8d1b9c1a63be0801d997f84710202;hb=96cdf5478550693d1e236a53e3390e2d59d59940;hp=563b0ec846fb4ac8bd1a3cc75238da83191f00f6;hpb=28041032337632a401c9a67c434c0e66556f2eb4;p=sicp.git diff --git a/src/sicp/metacircular2-test.rkt b/src/sicp/metacircular2-test.rkt index 563b0ec..a4c23ea 100644 --- a/src/sicp/metacircular2-test.rkt +++ b/src/sicp/metacircular2-test.rkt @@ -34,7 +34,35 @@ (* x z)) env1) 39 - "let* test")))) + "let* test") + (eval '(define (f x) + (define (even? n) + (if (= n 0) + true + (odd? (- n 1)))) + (define (odd? n) + (if (= n 0) + false + (even? (- n 1)))) + (odd? x)) + env1) + (check-equal? (eval '(f 2) env1) false "internal definitions") + (check-equal? (eval '(f 3) env1) true "internal definitions") + (eval '(define (f1 x) + (letrec ((even? + (lambda (n) + (if (= n 0) + true + (odd? (- n 1))))) + (odd? + (lambda (n) + (if (= n 0) + false + (even? (- n 1)))))) + (even? x))) + env1) + (check-equal? (eval '(f1 2) env1) true "internal definitions") + (check-equal? (eval '(f1 3) env1) false "internal definitions")))) (run-tests metacircular2-tests) \ No newline at end of file