All pastes #707874 Raw Edit

Advanced trace

public text v1 · immutable
#707874 ·published 2007-09-23 11:23 UTC
rendered paste body
(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 #<procedure:term> 0 #<procedure:inc1> 10)
D,"Entering traced lambda",(0)
D,"Leaving traced lambda",0.0
> (sum #<procedure:term> 1 #<procedure:inc1> 10)
D,"Entering traced lambda",(1)
D,"Leaving traced lambda",0.0010000000000000002
> (sum #<procedure:term> 2 #<procedure:inc1> 10)
D,"Entering traced lambda",(2)
D,"Leaving traced lambda",0.008000000000000002
> (sum #<procedure:term> 3 #<procedure:inc1> 10)
D,"Entering traced lambda",(3)
D,"Leaving traced lambda",0.02700000000000001
> (sum #<procedure:term> 4 #<procedure:inc1> 10)
D,"Entering traced lambda",(4)
D,"Leaving traced lambda",0.06400000000000002
> (sum #<procedure:term> 5 #<procedure:inc1> 10)
D,"Entering traced lambda",(5)
D,"Leaving traced lambda",0.125
> (sum #<procedure:term> 6 #<procedure:inc1> 10)
D,"Entering traced lambda",(6)
D,"Leaving traced lambda",0.21600000000000008
> (sum #<procedure:term> 7 #<procedure:inc1> 10)
D,"Entering traced lambda",(7)
D,"Leaving traced lambda",0.3430000000000001
> (sum #<procedure:term> 8 #<procedure:inc1> 10)
D,"Entering traced lambda",(8)
D,"Leaving traced lambda",0.5120000000000001
> (sum #<procedure:term> 9 #<procedure:inc1> 10)
D,"Entering traced lambda",(9)
D,"Leaving traced lambda",0.7290000000000001
> (sum #<procedure:term> 10 #<procedure:inc1> 10)
D,"Entering traced lambda",(10)
D,"Leaving traced lambda",1.0
> (sum #<procedure:term> 11 #<procedure:inc1> 10)
< (sum #<procedure:term> 11 #<procedure:inc1> 10)
< (sum #<procedure:term> 10 #<procedure:inc1> 10)
< (sum #<procedure:term> 9 #<procedure:inc1> 10)
< (sum #<procedure:term> 8 #<procedure:inc1> 10)
< (sum #<procedure:term> 7 #<procedure:inc1> 10)
< (sum #<procedure:term> 6 #<procedure:inc1> 10)
< (sum #<procedure:term> 5 #<procedure:inc1> 10)
< (sum #<procedure:term> 4 #<procedure:inc1> 10)
< (sum #<procedure:term> 3 #<procedure:inc1> 10)
< (sum #<procedure:term> 2 #<procedure:inc1> 10)
< (sum #<procedure:term> 1 #<procedure:inc1> 10)
< (sum #<procedure:term> 0 #<procedure:inc1> 10)
> (sum #<procedure:term> 1 #<procedure:inc1> 9)
D,"Entering traced lambda",(1)
D,"Leaving traced lambda",0.0010000000000000002
> (sum #<procedure:term> 2 #<procedure:inc1> 9)
D,"Entering traced lambda",(2)
D,"Leaving traced lambda",0.008000000000000002
> (sum #<procedure:term> 3 #<procedure:inc1> 9)
D,"Entering traced lambda",(3)
D,"Leaving traced lambda",0.02700000000000001
> (sum #<procedure:term> 4 #<procedure:inc1> 9)
D,"Entering traced lambda",(4)
D,"Leaving traced lambda",0.06400000000000002
> (sum #<procedure:term> 5 #<procedure:inc1> 9)
D,"Entering traced lambda",(5)
D,"Leaving traced lambda",0.125
> (sum #<procedure:term> 6 #<procedure:inc1> 9)
D,"Entering traced lambda",(6)
D,"Leaving traced lambda",0.21600000000000008
> (sum #<procedure:term> 7 #<procedure:inc1> 9)
D,"Entering traced lambda",(7)
D,"Leaving traced lambda",0.3430000000000001
> (sum #<procedure:term> 8 #<procedure:inc1> 9)
D,"Entering traced lambda",(8)
D,"Leaving traced lambda",0.5120000000000001
> (sum #<procedure:term> 9 #<procedure:inc1> 9)
D,"Entering traced lambda",(9)
D,"Leaving traced lambda",0.7290000000000001
> (sum #<procedure:term> 10 #<procedure:inc1> 9)
< (sum #<procedure:term> 10 #<procedure:inc1> 9)
< (sum #<procedure:term> 9 #<procedure:inc1> 9)
< (sum #<procedure:term> 8 #<procedure:inc1> 9)
< (sum #<procedure:term> 7 #<procedure:inc1> 9)
< (sum #<procedure:term> 6 #<procedure:inc1> 9)
< (sum #<procedure:term> 5 #<procedure:inc1> 9)
< (sum #<procedure:term> 4 #<procedure:inc1> 9)
< (sum #<procedure:term> 3 #<procedure:inc1> 9)
< (sum #<procedure:term> 2 #<procedure:inc1> 9)
< (sum #<procedure:term> 1 #<procedure:inc1> 9)
> (sum #<procedure:term> 1 #<procedure:inc2> 9)
D,"Entering traced lambda",(1)
D,"Leaving traced lambda",0.0010000000000000002
> (sum #<procedure:term> 3 #<procedure:inc2> 9)
D,"Entering traced lambda",(3)
D,"Leaving traced lambda",0.02700000000000001
> (sum #<procedure:term> 5 #<procedure:inc2> 9)
D,"Entering traced lambda",(5)
D,"Leaving traced lambda",0.125
> (sum #<procedure:term> 7 #<procedure:inc2> 9)
D,"Entering traced lambda",(7)
D,"Leaving traced lambda",0.3430000000000001
> (sum #<procedure:term> 9 #<procedure:inc2> 9)
D,"Entering traced lambda",(9)
D,"Leaving traced lambda",0.7290000000000001
> (sum #<procedure:term> 11 #<procedure:inc2> 9)
< (sum #<procedure:term> 11 #<procedure:inc2> 9)
< (sum #<procedure:term> 9 #<procedure:inc2> 9)
< (sum #<procedure:term> 7 #<procedure:inc2> 9)
< (sum #<procedure:term> 5 #<procedure:inc2> 9)
< (sum #<procedure:term> 3 #<procedure:inc2> 9)
< (sum #<procedure:term> 1 #<procedure:inc2> 9)
0.25