define foo 25 define foo let x 5

  • Slides: 39
Download presentation
(define foo 25) (define foo (let ((x 5)) (* x x)))

(define foo 25) (define foo (let ((x 5)) (* x x)))

(define foo 25) (define foo (let ((x 5)) (* x x))) foo is the

(define foo 25) (define foo (let ((x 5)) (* x x))) foo is the return value of (let. . . ) , 25

(define foo 25) (define foo (let ((x 5)) (* x x))) (define (bar) 25)

(define foo 25) (define foo (let ((x 5)) (* x x))) (define (bar) 25) (define bar (lambda () 25)) (define bar (let ((x 5)) (lambda () (* x x))) foo is the return value of (let. . . ) , 25

(define foo 25) (define foo (let ((x 5)) (* x x))) foo is the

(define foo 25) (define foo (let ((x 5)) (* x x))) foo is the return value of (let. . . ) , 25 (define (bar) 25) (define bar (lambda () 25)) (define bar (let ((x 5)) (lambda () (* x x))) Bar is the return value of (let. . . ) : (lambda () (* x x))

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) )))))

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter: ==> ? ? ?

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter: ==> ? ? ?

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter: ==> ? ? ?

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter: ==> ? ? ?

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter: ==> ? ? ?

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num

(define make-counter (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter c 1: ==> ? ? ?

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter c 1: ==> ? ? ?

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter c 1: ==> ? ? ?

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G globnum: 0 make-counter c 1: ==> ? ? ?

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1: ==> ? ? ? loc-num: 1 globnum: 0

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1: ==> ? ? ? loc-num: 1 globnum: 0

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num

(define make-counter > (define c 1 (make-counter) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 1 globnum: 0

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 1 globnum: 0

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 1 globnum: 0

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 2 globnum: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 2 globnum: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 2 globnum: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ?

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ?

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ?

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ?

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ? loc-num: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2: ==> ? loc-num: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2 loc-num: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2 loc-num: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 2 c 2 loc-num: 1

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 3 c 2 loc-num: 2

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) > (c 2) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 3 c 2 loc-num: 2

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) > (c 2) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 3 c 2 loc-num: 2

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) >

(define make-counter > (define c 1 (make-counter) > (c 1) (let ((glob-num 0)) > (c 1) (lambda () > (define c 2 (make-counter) (let ((loc-num 1)) > (c 2) (lambda () (set! loc-num (+ loc-num 1)) > (c 2) (set! glob-num (+ glob-num 1)) ))))) G make-counter c 1 loc-num: 3 globnum: 4 c 2 loc-num: 3