Programming paradigms 1Evaluation: define
Miroslav Hruška
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))
define
Eval[define,PG] = ’special form define’
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))
(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’
(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’
(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’
(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’
(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’
(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’
(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’
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))
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
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))
(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.
(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.
(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.
(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.
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))
(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.
(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.
(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.
(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.
(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.
(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.
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))
(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.
(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.
(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.
(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.
(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.
(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.
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))
(define)
Eval[(define),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, ] = . . .
Error: define: Incorrect number of arguments
(define)
Eval[(define),PG] = . . .
Eval[define,PG] = ’special form define’
ApplyPG[’special form define’, ] = . . .
Error: define: Incorrect number of arguments
(define)
Eval[(define),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, ] = . . .
Error: define: Incorrect number of arguments
(define)
Eval[(define),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, ] = . . .
Error: define: Incorrect number of arguments
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))
(define x)
Eval[(define x),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, x] = . . .
Error: define: Incorrect number of arguments
(define x)
Eval[(define x),PG] = . . .
Eval[define,PG] = ’special form define’
ApplyPG[’special form define’, x] = . . .
Error: define: Incorrect number of arguments
(define x)
Eval[(define x),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, x] = . . .
Error: define: Incorrect number of arguments
(define x)
Eval[(define x),PG] = . . .
Eval[define,PG] = ’special form define’ApplyPG
[’special form define’, x] = . . .
Error: define: Incorrect number of arguments
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))
(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
(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
(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
(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
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))
(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’
(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’
(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’
(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’
(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’
(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’
(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’
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))
(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’
(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’
(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’
(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’
(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’
(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’
(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’
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))
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’
(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’