@@ -33,7 +33,7 @@
34 tables=$~([(malt ~[[0 *table]]) 1] (objects table))
34 tables=$~([(malt ~[[0 *table]]) 1] (objects table))
35 global-env=table
35 global-env=table
36− local-envs=$~(~[(malt ~[['_ENV' table+[0 ~]]])] (list (map name value)))
36+ local-envs=$~(~[(malt ~[['_ENV' table+[0 ~]]])] (lest (map name value)))
@@ -59,8 +59,10 @@
61++ eval-blok
61++ eval-blok
63 ^- (eval-m value)
64 ^- (eval-m value)
64 =/ body body.blok
66 =/ body body.blok
66 ^- (eval-m value)
68 ^- (eval-m value)
@@ -68,9 +70,36 @@
68 ?~ ret.blok (pure nil+~)
70 ?~ ret.blok (pure nil+~)
69 ?~ u.ret.blok (pure nil+~)
71 ?~ u.ret.blok (pure nil+~)
70 ;< rets=(lest value) bind (eval-exprlist u.u.ret.blok)
72 ;< rets=(lest value) bind (eval-exprlist u.u.ret.blok)
71− (pure multires+rets)
73+ (pure (multires rets))
72 ;< ~ bind (eval-stat i.body)
74 ;< ~ bind (eval-stat i.body)
73− $(body t.body)
75+ ;< ret=value bind $(body t.body)
82+ ;< res=_val:$:act bind act
88+ =. local-envs.st [*(map name value) local-envs.st]
94+ ?~ t.local-envs.st !!
74++ eval-exprlist
103++ eval-exprlist
75 |= vals=exprlist
104 |= vals=exprlist
76 ^- (eval-m (lest value))
105 ^- (eval-m (lest value))
@@ -96,15 +125,31 @@
96 (set-table ->-.i.asmnts (~(put by tabl) ->+.i.asmnts +.i.asmnts))
125 (set-table ->-.i.asmnts (~(put by tabl) ->+.i.asmnts +.i.asmnts))
98 $(asmnts t.asmnts)
127 $(asmnts t.asmnts)
130+ %+ turn attrnamelist.stat
131+ |= [=name attr=(unit attrib)]
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
140+ %- ~(uni by i.local-envs.st)
142+ (weld (turn lhs |=(=name [name `value`nil+~])) actual-values)
100++ set-var
145++ set-var
101 |= var=name
146 |= var=name
102 |= val=value
147 |= val=value
103 ^- (eval-m ~)
148 ^- (eval-m ~)
104 ;< envs=(list (map name value)) bind get-local-envs
149 ;< envs=(list (map name value)) bind get-local-envs
105− =/ new-envs=(unit (list (map name value)))
150+ =/ new-envs=(unit (lest (map name value)))
107− ^- (unit (list (map name value)))
152+ ^- (unit (lest (map name value)))
108 ?~ envs ~
153 ?~ envs ~
109 ?. (~(has by i.envs) var)
154 ?. (~(has by i.envs) var)
110 =/ rest $(envs t.envs)
155 =/ rest $(envs t.envs)
@@ -141,6 +186,7 @@
141 =/ tail=value (normalize-multires i.vals)
186 =/ tail=value (normalize-multires i.vals)
142 ?: ?=(%multires -.tail) +.tail [tail ~]
187 ?: ?=(%multires -.tail) +.tail [tail ~]
143 [i.vals $(vals t.vals)]
188 [i.vals $(vals t.vals)]
144 multires+res
190 multires+res
146++ process-varlist
192++ process-varlist