+ All Categories
Home > Documents > Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1...

Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1...

Date post: 27-Sep-2020
Category:
Upload: others
View: 1 times
Download: 0 times
Share this document with a friend
87
Programming paradigms 1 Evaluation: define Miroslav Hruška
Transcript
Page 1: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Programming paradigms 1Evaluation: define

Miroslav Hruška

Page 2: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 3: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

define

Eval[define,PG] = ’special form define’

Page 4: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 5: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 6: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 7: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 8: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.

Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 9: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 10: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 11: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0)

Eval[(define x 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0] = . . .

Xx is a symbol.Eval[0,PG] = 0

x 7→PG 0

= ’undefined’

Page 12: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 13: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 14: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 15: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 16: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.

Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 17: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 18: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’

Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 19: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 20: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 21: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 22: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 23: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (+ 1 1))

Eval[(define x (+ 1 1)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (+ 1 1)] = . . .

Xx is a symbol.Eval[(+ 1 1),PG] = . . .

Eval[+,PG] = ’pr. proc. of sum.’Eval[1,PG] = 1

Eval[1,PG] = 1

Apply[’pr. proc. of sum.’, 1, 1] = 2

x 7→PG 2

= ’undefined’

Page 24: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 25: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define 0 x)

Eval[(define 0 x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, 0, x] = . . .

Error: define: ’0’ is not a symbol.

Page 26: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define 0 x)

Eval[(define 0 x),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, 0, x] = . . .

Error: define: ’0’ is not a symbol.

Page 27: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define 0 x)

Eval[(define 0 x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, 0, x] = . . .

Error: define: ’0’ is not a symbol.

Page 28: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define 0 x)

Eval[(define 0 x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, 0, x] = . . .

Error: define: ’0’ is not a symbol.

Page 29: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 30: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, x] = . . .

Xx is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 31: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x, x] = . . .

Xx is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 32: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, x] = . . .

Xx is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 33: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, x] = . . .

Xx is a symbol.

Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 34: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, x] = . . .

Xx is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 35: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x x)

Eval[(define x x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, x] = . . .

Xx is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 36: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 37: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, x] = . . .

Xy is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 38: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, y, x] = . . .

Xy is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 39: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, x] = . . .

Xy is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 40: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, x] = . . .

Xy is a symbol.

Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 41: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, x] = . . .

Xy is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 42: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define y x)

Eval[(define y x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, x] = . . .

Xy is a symbol.Eval[x,PG] = ...

Error: Symbol ’x’ does not have binding.

Page 43: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 44: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define)

Eval[(define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, ] = . . .

Error: define: Incorrect number of arguments

Page 45: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define)

Eval[(define),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, ] = . . .

Error: define: Incorrect number of arguments

Page 46: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define)

Eval[(define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, ] = . . .

Error: define: Incorrect number of arguments

Page 47: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define)

Eval[(define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, ] = . . .

Error: define: Incorrect number of arguments

Page 48: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 49: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x)

Eval[(define x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x] = . . .

Error: define: Incorrect number of arguments

Page 50: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x)

Eval[(define x),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x] = . . .

Error: define: Incorrect number of arguments

Page 51: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x)

Eval[(define x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x] = . . .

Error: define: Incorrect number of arguments

Page 52: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x)

Eval[(define x),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x] = . . .

Error: define: Incorrect number of arguments

Page 53: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 54: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0 z)

Eval[(define x 0 z),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0, z] = . . .

Error: define: Incorrect number of arguments

Page 55: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0 z)

Eval[(define x 0 z),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x, 0, z] = . . .

Error: define: Incorrect number of arguments

Page 56: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0 z)

Eval[(define x 0 z),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0, z] = . . .

Error: define: Incorrect number of arguments

Page 57: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x 0 z)

Eval[(define x 0 z),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, 0, z] = . . .

Error: define: Incorrect number of arguments

Page 58: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 59: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 60: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 61: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 62: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.

Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 63: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 64: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 65: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define 0)

Eval[(define define 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, 0] = . . .

Xdefine is a symbol.Eval[0,PG] = 0

define 7→PG 0

= ’undefined’

Page 66: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 67: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’define 7→PG ’special form define’= ’undefined’

Page 68: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’define 7→PG ’special form define’= ’undefined’

Page 69: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’define 7→PG ’special form define’= ’undefined’

Page 70: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.

Eval[define,PG] = ’special form define’define 7→PG ’special form define’= ’undefined’

Page 71: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’

define 7→PG ’special form define’= ’undefined’

Page 72: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’define 7→PG ’special form define’

= ’undefined’

Page 73: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define define define)

Eval[(define define define),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, define, define] = . . .

Xdefine is a symbol.Eval[define,PG] = ’special form define’define 7→PG ’special form define’= ’undefined’

Page 74: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

Outline

1 define

2 (define x 0)

3 (define x (+ 1 1))

4 (define 0 x)

5 (define x x)

6 (define y x)

7 (define)

8 (define x)

9 (define x 0 z)

10 (define define 0)

11 (define define define)

12 (define x (define y 0))

Page 75: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 76: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 77: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 78: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.

Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 79: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 80: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’

ApplyPG[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 81: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 82: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.

Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 83: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 84: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’

Page 85: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’

x 7→PG ’undefined’= ’undefined’

Page 86: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’

= ’undefined’

Page 87: Evaluation: define MiroslavHruškaphoebe.inf.upol.cz/~hruskam/materials/define.pdf · Outline 1 define 2 (definex0) 3 (definex(+11)) 4 (define0x) 5 (definexx) 6 (defineyx)

(define x (define y 0))

Eval[(define x (define y 0)),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, x, (define y 0)] = . . .

Xx is a symbol.Eval[(define y 0),PG] = . . .

Eval[define,PG] = ’special form define’ApplyPG

[’special form define’, y, 0] = . . .

Xy is a symbol.Eval[0,PG] = 0

y 7→PG 0

= ’undefined’x 7→PG ’undefined’= ’undefined’


Recommended