מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2,...

31
בבבב בבבבב בבבבב בבבבב בבבבScheme בבבבב10

Transcript of מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2,...

Page 1: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

מבוא מורחב למדעי המחשב Scheme בשפת

10תרגול

Page 2: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Environment Model

3.2, pages 238-251

Page 3: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Environments• Binding: a pairing of a name and a value

• Frame: a table of bindings

• Environment: a sequence of frames

• 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 rule applying a procedure

The Environment Model

Page 4: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

The Environment Model• Name-rule: A name X evaluated in environment E gives

the value of X in the first frame of E where X is bound• Define-rule: A define special form evaluated in environment E creates

or replaces a binding in the first frame of E• 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• Lambda-rule: A lambda special form evaluated in environment E

creates a procedure whose environment pointer points to E• Application Rule: To apply a compound procedure P to arguments

1.Create a new frame A2. 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

Page 5: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

• (define (square x) (* x x))

Page 6: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

• (square 5)

Page 7: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

(define (square x) (* x x))(define (sum-of-squares x y) (+ (square x) (square y)))(define (f a) (sum-of-squares (+ a 1) (* a 2)))

Page 8: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Application: (f 5)

Page 9: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Nested Procedures

(define g (lambda () (lambda (x y) (* x y))))

(define f (g))

(f 3 4) => 12

Page 10: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p:b:(lambda (x y) (* x y))

g:

(define g (lambda () (lambda (x y) (* x y))))

Page 11: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p:b:(lambda (x y) (* x y))

g:f:

p: x yb: (* x y)

E1 empty

(define f (g))

Page 12: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p:b:(lambda (x y) (* x y))

g:f:

p: x yb: (* x y)

E1 empty

(f 3 4)

X=3Y=4

E2

Page 13: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Nested Procedures

(define g

(lambda (z)

(lambda (x y)

(* x y z))))

(define f (g 2))

(f 3 4) => 24

Page 14: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p: zb:(lambda (x y) (* x y z))

g:f:

(define g (lambda (z) (lambda (x y) (* x y z))))

Page 15: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p: zb:(lambda (x y) (* x y z))

g:f:

p: x yb: (* x y z)

E1 Z: 2

(define f (g 2))

Page 16: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

GE

p: zb:(lambda (x y) (* x y z))

g:f:

p: x yb: (* x y z)

E1 Z: 2

(f 3 4)

X=3Y=4

E2

Page 17: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Let expressions

(let ((<var> <exp>)) <body>)is syntactic sugar for((lambda (<var>) <body>) <exp>)

(define a 5)(define b 6)(let ((a 2) (c a))

(+ a b c))=((lambda (a c) (+ a b c)) 2 a)

Page 18: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Let – cont.GE

a: 5 b: 6

p: a c

b: (+ a b c)

E1

a: 2

c: 5

(define a 5)(define b 6)(let ((a 2) (c a))

(+ a b c))=((lambda (a c) (+ a b c)) 2

a)

Page 19: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

The cash machine(define (make-withdraw balance)

  (lambda (amount)    (if (>= balance amount)        (begin (set! balance (- balance amount))               balance)        "Insufficient funds")))

(define W1 (make-withdraw 100))

> W1

>

>(W1 50)

>

>(W1 40)

>

>(W1 20)

>

50

10

Insufficient funds

#<procedure>

Page 20: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

(define (make-withdraw balance)  (lambda (amount)    (if (>= balance amount)        (begin (set! balance (- balance amount))               balance)        "Insufficient funds")))

Page 21: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

(define W1 (make-withdraw 100))

Page 22: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

(W1 50)

Page 23: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.
Page 24: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

More than one cash machine>(define W1 (make-withdraw 100))

>(define W2 (make-withdraw 100))

>

>(W1 50)

>

>(W2 40)

>

50

60

Page 25: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

(define W2 (make-withdraw 100))

Page 26: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

question from past exams

26

Page 27: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

Make-line

(define (make-line a b) (lambda (x) (cond ((pair? x) (set! a (car x)) (set! b (cdr x)))

(else (+ b (* x a)))) ) ) (define a 4)(define b 5)(define proc (make-line 1 2))

Q1

Page 28: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

make-line:a: 4b: 5proc:

GE

p: a bb:(lambda (x)…

a: 1b: 2

E1

p: xb:(cond…

Page 29: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

make-line:a: 3b: 5proc:

GE

p: a bb:(lambda (x)…

a: 1b: 2

E1

p: xb:(cond…

x: 1E2

(+ b (* x a))(set! a (proc 1))

Page 30: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

make-line:a: 3b: 5proc:

GE

p: a bb:(lambda (x)…

a: 1 3b: 2 4

E1

p: xb:(cond…

x: 3.4E3

(set! a (car x))(set! b (cdr x))(proc (cons 3 4))

Page 31: מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2, pages 238-251.

make-line:a: 3b: 5proc: c: 7

GE

p: a bb:(lambda (x)…

a: 3b: 4

E1

p: xb:(cond…

x: 1E4

(+ b (* x a))(define c (proc 1))