Lecture 14: Assignment and the Environment Model (EM) - PowerPoint PPT Presentation

About This Presentation
Title:

Lecture 14: Assignment and the Environment Model (EM)

Description:

Only the GE has no enclosing environment. 15. Name-rule. A name X ... A's enclosing environment pointer goes to the same frame. as the environment pointer of P ... – PowerPoint PPT presentation

Number of Views:14
Avg rating:3.0/5.0
Slides: 35
Provided by: duaneb3
Category:

less

Transcript and Presenter's Notes

Title: Lecture 14: Assignment and the Environment Model (EM)


1
Lecture 14 Assignment and the Environment Model
(EM)
2
Primitive Data
  • constructor
  • (define x 10) creates a new binding for name
  • special form
  • selectors x returns value bound to name
  • mutators (set! x "foo") changes the binding
    for name special form

3
Assignment -- set!
  • Substitution model -- functional
    programming(define x 10)( x 5) gt 15 -
    expression has same value... each time it
    evaluated (in( x 5) gt 15 same scope as
    binding)
  • With assignment(define x 10)( x 5) gt 15 -
    expression "value" depends... on when it is
    evaluated(set! x 94)...( x 5) gt 99

4
Why? To have objects with local state
  • State is summarized in a set of variables.
  • When the object change state the variable change
    value.

5
Example A counter
  • (define make-counter (lambda (n)
    (lambda () (set! n ( n 1)) n
    )))
  • (define ca (make-counter 0))

1
(ca) gt
2
(ca) gt
(define cb (make-counter 0))
1
(cb) gt
3
(ca) gt
ca and cb are independent
Can you figure out why this code works?
6
Lets try to understand this
  • (define make-counter (lambda (n) (lambda
    () (set! n ( n 1)) n )))
  • (define ca (make-counter 0))
  • ca gt (lambda () (set! n ( 0 1)) 0)
  • (ca)
  • (set! n ( 0 1) 0)
  • gt ??

7
Summary
  • Scheme provides built-in mutators
  • set! to change a binding
  • Mutation introduces substantial complexity !!
  • Unexpected side effects
  • Substitution model is no longer sufficient to
    explain behavior

8
Another thing the substitution model did not
explain well
  • Nested definitions block structure
  • (define (sqrt x)
  • (define (good-enough? guess x)
  • (lt (abs (- (square guess) x)) 0.001))
  • (define (improve guess x)
  • (average guess (/ x guess)))
  • (define (sqrt-iter guess x)
  • (if (good-enough? guess x)
  • guess
  • (sqrt-iter (improve guess x) x)))
  • (sqrt-iter 1.0 x))

9
The Environment Model
10
What the EM is
  • A precise, completely mechanical description of
  • name-rule looking up the value of a variable
  • define-rule creating a new definition of a var
  • set!-rule changing the value of a variable
  • lambda-rule creating a procedure
  • application applying a procedure
  • Enables analyzing arbitrary scheme code
  • Example make-counter
  • Basis for implementing a scheme interpreter
  • for now draw EM state with boxes and pointers
  • later on implement with code

11
A shift in viewpoint
  • As we introduce the environment model, we are
    going to shift our viewpoint on computation
  • Variable
  • OLD name for value
  • NEW place into which one can store things
  • Procedure
  • OLD functional description
  • NEW object with inherited context

12
Frame a table of bindings
  • Binding a pairing of a name and a value

Example x is bound to 15 in frame A
y is bound to (1 2) in frame A
the value of the variable x in frame
A is 15
13
Environment a sequence of frames
  • Environment E1 consists of frames A and B
  • Environment E2 consists of frame B only
  • A frame may be shared by multiple environments

this arrow is calledthe enclosingenvironment
pointer
14
Evaluation in the environment model
  • All evaluation occurs in an environment
  • The current environment changes when
    theinterpreter applies a procedure
  • The top environment is called the global
    environment (GE)
  • Only the GE has no enclosing environment
  • To evaluate a combination
  • Evaluate the subexpressions in the current
    environment
  • Apply the value of the first to the values of the
    rest

15
Name-rule
  • A name X evaluated in environment E givesthe
    value of X in the first frame of E where X is
    bound
  • z GE gt 10 z E1 gt 10 x E1 gt 15

16
Define-rule
  • A define special form evaluated in environment
    Ecreates or replaces a binding in the first
    frame of E

(define z 25) E1
(define z 20) GE
z 25
17
Set!-rule
  • A set! of variable X evaluated in environment E
    changes the binding of X in the first frame of E
    where X is bound

(set! z 25) E1
(set! z 20) GE
18
Your turn evaluate the following in order
11
  • ( z 1) E1 gt
  • (set! z ( z 1)) E1 (modify EM)
  • (define z ( z 1)) E1 (modify EM)
  • (set! y ( z 1)) GE (modify EM)

Errorunbound variable y
B
z 10x 3
GE
A
x 15
z 12
E1
y
19
Double bubble how to draw a procedure
20
Lambda-rule
  • A lambda special form evaluated in environment
    Ecreates a procedure whose environment pointer
    is E

(define square (lambda (x) ( x x))) E1
environment pointerpoints to frame Abecause the
lambdawas evaluated in E1and E1 ? A
21
To apply a compound procedure P to arguments
  • 1. Create a new frame A
  • 2. Make A into an environment E A's enclosing
    environment pointer goes to the same frame as
    the environment pointer of P
  • 3. In A, bind the parameters of P to the argument
    values
  • 4. Evaluate the body of P with E as the current
    environment

You mustmemorize thesefour steps
22
(square 4) GE
x 10
prim
GE
square
parameters xbody ( x x)
x 4
square GE
gt proc
  • ( x x) E1

gt 16
x E1
E1
gt 4
gt prim
23
Example inc-square
inc-square
GE
square
p xb ( x x)
p yb ( 1 (square y))
  • (define square (lambda (x) ( x x))) GE
  • (define inc-square (lambda (y) ( 1
    (square y))) GE

24
Example cont'd (inc-square 4) GE
y 4
inc-square GE gt compound-proc ...
( 1 (square y)) E1
E1
gt prim
(square y) E1
25
Example cont'd (square y) E1
x 4
y E1
gt 4
square E1
gt compound
( x x) E2
gt 16
( 1 16) gt 17
E2 gt prim x E2 gt 4
26
Lessons from the inc-square example
  • EM doesn't show the complete state of the
    interpreter
  • missing the stack of pending operations
  • The GE contains all standard bindings (, cons,
    etc)
  • omitted from EM drawings
  • Useful to link environment pointer of each frame
    to the procedure that created it

27
Example make-counter
  • Counter something which counts up from a number
  • (define make-counter (lambda (n) (lambda
    () (set! n ( n 1)) n )))
  • (define ca (make-counter 0))(ca) gt 1(ca) gt
    2(define cb (make-counter 0))(cb) gt 1(ca)
    gt 3(cb) gt 2 ca and cb are independent

28
(define ca (make-counter 0)) GE
n 0
environment pointerpoints to E1because the
lambdawas evaluated in E1
(lambda () (set! n ( n 1)) n) E1
29
(ca) GE
gt 1
empty
(set! n ( n 1)) E2
n E2 gt 1
30
(ca) GE
gt 2
empty
(set! n ( n 1)) E3
n E3 gt 2
31
(define cb (make-counter 0)) GE
n 0
(lambda () (set! n ( n 1)) n) E4
32
(cb) GE
gt 1
33
Capturing state in local frames procedures
34
Lessons from the make-counter example
  • Environment diagrams get complicated very quickly
  • Rules are meant for the computer to follow, not
    to help humans
  • A lambda inside a procedure body captures
    theframe that was active when the lambda was
    evaluated
  • this effect can be used to store local state
Write a Comment
User Comments (0)
About PowerShow.com