+ All Categories
Home > Documents > מבוא מורחב למדעי המחשב בשפת Scheme תרגול 10. Environment Model 3.2,...

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

Date post: 18-Dec-2015
Category:
Upload: merryl-sullivan
View: 223 times
Download: 0 times
Share this document with a friend
Popular Tags:
31
בבבב בבבבב בבבבב בבבבב בבבבScheme בבבבב10
Transcript
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))


Recommended