on master help sign in
push and pop local vars
e7d0400iko
TODO.md−3
@@ -8,6 +8,3 @@
8- [x] ^ should be higher priority than unary ops
8- [x] ^ should be higher priority than unary ops
9- [x] Unifiy parened exprs
9- [x] Unifiy parened exprs
10- [ ] pow
10- [ ] pow
11−
12−
13− {f()} -- creates a list with all results from f().
desk/lib/lua/interpreter.hoon+19−1
@@ -59,9 +59,11 @@
59 |= state
59 |= state
60 [st ~]
60 [st ~]
61++ eval-blok
61++ eval-blok
62+ =<
62 |= =blok
63 |= =blok
63 ^- (eval-m value)
64 ^- (eval-m value)
64 =/ body body.blok
65 =/ body body.blok
66+ ;< ~ bind push-local
65 |-
67 |-
66 ^- (eval-m value)
68 ^- (eval-m value)
67 ?~ body
69 ?~ body
@@ -70,7 +72,23 @@
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)
76+ ;< ~ bind pop-local
77+ (pure ret)
78+ |%
79+ ++ push-local
80+ ^- (eval-m ~)
81+ |= st=state
82+ =. local-envs.st [*(map name value) local-envs.st]
83+ [st ~]
84+ ++ pop-local
85+ ^- (eval-m ~)
86+ |= st=state
87+ =. local-envs.st
88+ ?~ local-envs.st !!
89+ t.local-envs.st
90+ [st ~]
91+ --
74++ eval-exprlist
92++ eval-exprlist
75 |= vals=exprlist
93 |= vals=exprlist
76 ^- (eval-m (lest value))
94 ^- (eval-m (lest value))