(require (planet "trace.ss" ("untyped" "unlib.plt" 2 1))) (define (cube x) (* x x x)) (define-traced (sum term a next b) (if (> a b) 0 (+ (term a) (sum term (next a) next b)))) (define (inc1 n) (+ n 1)) (define (inc2 n) (+ n 2)) (define (simpson f a b n) (let* ((h (/ (- b a) n)) (term (lambda-traced (k) (f (+ a (* k h)))))) (* (/ h 3.0) (+ (sum term 0 inc1 n) (sum term 1 inc1 (- n 1)) (* 2.0 (sum term 1 inc2 (- n 1))))))) (simpson cube 0.0 1.0 10) > (sum # 0 # 10) D,"Entering traced lambda",(0) D,"Leaving traced lambda",0.0 > (sum # 1 # 10) D,"Entering traced lambda",(1) D,"Leaving traced lambda",0.0010000000000000002 > (sum # 2 # 10) D,"Entering traced lambda",(2) D,"Leaving traced lambda",0.008000000000000002 > (sum # 3 # 10) D,"Entering traced lambda",(3) D,"Leaving traced lambda",0.02700000000000001 > (sum # 4 # 10) D,"Entering traced lambda",(4) D,"Leaving traced lambda",0.06400000000000002 > (sum # 5 # 10) D,"Entering traced lambda",(5) D,"Leaving traced lambda",0.125 > (sum # 6 # 10) D,"Entering traced lambda",(6) D,"Leaving traced lambda",0.21600000000000008 > (sum # 7 # 10) D,"Entering traced lambda",(7) D,"Leaving traced lambda",0.3430000000000001 > (sum # 8 # 10) D,"Entering traced lambda",(8) D,"Leaving traced lambda",0.5120000000000001 > (sum # 9 # 10) D,"Entering traced lambda",(9) D,"Leaving traced lambda",0.7290000000000001 > (sum # 10 # 10) D,"Entering traced lambda",(10) D,"Leaving traced lambda",1.0 > (sum # 11 # 10) < (sum # 11 # 10) < (sum # 10 # 10) < (sum # 9 # 10) < (sum # 8 # 10) < (sum # 7 # 10) < (sum # 6 # 10) < (sum # 5 # 10) < (sum # 4 # 10) < (sum # 3 # 10) < (sum # 2 # 10) < (sum # 1 # 10) < (sum # 0 # 10) > (sum # 1 # 9) D,"Entering traced lambda",(1) D,"Leaving traced lambda",0.0010000000000000002 > (sum # 2 # 9) D,"Entering traced lambda",(2) D,"Leaving traced lambda",0.008000000000000002 > (sum # 3 # 9) D,"Entering traced lambda",(3) D,"Leaving traced lambda",0.02700000000000001 > (sum # 4 # 9) D,"Entering traced lambda",(4) D,"Leaving traced lambda",0.06400000000000002 > (sum # 5 # 9) D,"Entering traced lambda",(5) D,"Leaving traced lambda",0.125 > (sum # 6 # 9) D,"Entering traced lambda",(6) D,"Leaving traced lambda",0.21600000000000008 > (sum # 7 # 9) D,"Entering traced lambda",(7) D,"Leaving traced lambda",0.3430000000000001 > (sum # 8 # 9) D,"Entering traced lambda",(8) D,"Leaving traced lambda",0.5120000000000001 > (sum # 9 # 9) D,"Entering traced lambda",(9) D,"Leaving traced lambda",0.7290000000000001 > (sum # 10 # 9) < (sum # 10 # 9) < (sum # 9 # 9) < (sum # 8 # 9) < (sum # 7 # 9) < (sum # 6 # 9) < (sum # 5 # 9) < (sum # 4 # 9) < (sum # 3 # 9) < (sum # 2 # 9) < (sum # 1 # 9) > (sum # 1 # 9) D,"Entering traced lambda",(1) D,"Leaving traced lambda",0.0010000000000000002 > (sum # 3 # 9) D,"Entering traced lambda",(3) D,"Leaving traced lambda",0.02700000000000001 > (sum # 5 # 9) D,"Entering traced lambda",(5) D,"Leaving traced lambda",0.125 > (sum # 7 # 9) D,"Entering traced lambda",(7) D,"Leaving traced lambda",0.3430000000000001 > (sum # 9 # 9) D,"Entering traced lambda",(9) D,"Leaving traced lambda",0.7290000000000001 > (sum # 11 # 9) < (sum # 11 # 9) < (sum # 9 # 9) < (sum # 7 # 9) < (sum # 5 # 9) < (sum # 3 # 9) < (sum # 1 # 9) 0.25