4 cell
% field
MalEnv/outer
5 cell
% field
MalEnv/data
8 : MalEnv. { outer
-- env
}
10 outer env
MalEnv/outer
!
11 MalMap/Empty env
MalEnv/data
!
14 : env
/set
{ key
val env -- }
15 key
val env MalEnv/data
@ assoc
18 : env/get
-addr
{ key
env -- val-addr
}
21 key over
MalEnv/data
@ MalMap/get
-addr
( env addr
-or-0 )
23 MalEnv/outer
@ dup
0= ( env-or-0 done-looping
? )
25 nip
-1 \ found it
! ( addr
-1 )
31 env MalEnv/data
@ pr
-buf
32 a
-space
s" outer: " str
-append
33 env MalEnv/outer
@ ?dup
0= if