@@ -33,7 +33,7 @@
3333 $:
3434 tables=$~([(malt ~[[0 *table]]) 1] (objects table))
3535 global-env=table
36− local-envs=$~(~[(malt ~[['_ENV' table+[0 ~]]])] (lest (map name value)))
36+ local-envs=$~(~[(malt ~[['_ENV' table+[0 ~]]])] (list (map name value)))
3737 ==
3838++ eval-m
3939 |$ [val]
@@ -62,26 +62,20 @@
6262 =<
6363 |= =blok
6464 ^- (eval-m value)
65− %- with-local
6665 =/ body body.blok
66+ ;< ~ bind push-local
6767 |-
6868 ^- (eval-m value)
6969 ?~ body
7070 ?~ ret.blok (pure nil+~)
7171 ?~ u.ret.blok (pure nil+~)
7272 ;< rets=(lest value) bind (eval-exprlist u.u.ret.blok)
73− (pure (multires rets))
73+ (pure multires+rets)
7474 ;< ~ bind (eval-stat i.body)
7575 ;< ret=value bind $(body t.body)
76+ ;< ~ bind pop-local
7677 (pure ret)
7778 |%
78− ++ with-local
79− |* act=(eval-m)
80− ^- _act
81− ;< ~ bind push-local
82− ;< res=_val:$:act bind act
83− ;< ~ bind pop-local
84− (pure res)
8579 ++ push-local
8680 ^- (eval-m ~)
8781 |= st=state
@@ -91,15 +85,10 @@
9185 ^- (eval-m ~)
9286 |= st=state
9387 =. local-envs.st
94− ?~ t.local-envs.st !!
88+ ?~ local-envs.st !!
9589 t.local-envs.st
9690 [st ~]
9791 --
98−++ multires
99− |= vals=(lest value)
100− ^- value
101− ?~ t.vals i.vals
102− multires+vals
10392++ eval-exprlist
10493 |= vals=exprlist
10594 ^- (eval-m (lest value))
@@ -125,31 +114,15 @@
125114 (set-table ->-.i.asmnts (~(put by tabl) ->+.i.asmnts +.i.asmnts))
126115 ==
127116 $(asmnts t.asmnts)
128− %local-asmnt
129− =/ lhs=(list name)
130− %+ turn attrnamelist.stat
131− |= [=name attr=(unit attrib)]
132− ?> ?=(~ attr)
133− name
134− ;< actual-values=(list [name value]) bind
135− ?~ rhs.stat (pure ~)
136− ;< rhs=(list value) bind (eval-exprlist u.rhs.stat)
137− (pure (zip lhs rhs))
138− ;< st=state bind get-state
139− =. i.local-envs.st
140− %- ~(uni by i.local-envs.st)
141− %- malt
142− (weld (turn lhs |=(=name [name `value`nil+~])) actual-values)
143− (set-state st)
144117 ==
145118++ set-var
146119 |= var=name
147120 |= val=value
148121 ^- (eval-m ~)
149122 ;< envs=(list (map name value)) bind get-local-envs
150− =/ new-envs=(unit (lest (map name value)))
123+ =/ new-envs=(unit (list (map name value)))
151124 |-
152− ^- (unit (lest (map name value)))
125+ ^- (unit (list (map name value)))
153126 ?~ envs ~
154127 ?. (~(has by i.envs) var)
155128 =/ rest $(envs t.envs)