4 Env class >>
new: outerEnv
[
5 ^self new: outerEnv
binds: {} exprs: {}
8 Env class >>
new: outerEnv
binds: binds
exprs: exprs
[
11 env
init: outerEnv
binds: binds
exprs: exprs
.
15 init: env
binds: binds
exprs: exprs
[
16 data
:= Dictionary new
.
19 [ :i |
(binds
at: i
) = #&
ifTrue: [
21 rest
:= OrderedCollection from: (exprs
copyFrom: i
).
22 self set: (binds
at: i
+ 1) value: (MALList new: rest
).
25 self set: (binds
at: i
) value: (exprs
at: i
)
29 set: key
value: value
[
30 data
at: key
put: value
.
34 ^data
at: key
ifAbsent: [
35 outer notNil
ifTrue: [
45 value
:= self find: key
.
47 value notNil
ifTrue: [
50 ^MALUnknownSymbol new
signal: key