continuing to work on recursion

This commit is contained in:
Danny Yoo 2011-03-08 03:13:26 -05:00
parent 072cdd695f
commit 2b56c90c2c
2 changed files with 11 additions and 11 deletions

View File

@ -32,7 +32,8 @@
#:transparent)
(define-struct: toplevel ([vals : (Listof PrimitiveValue)])
#:transparent)
#:transparent
#:mutable)

View File

@ -147,11 +147,10 @@
(let: ([op : PrimitiveCommand (PerformStatement-op stmt)])
(cond
[(SetToplevel!? op)
(env-mutate m
(SetToplevel!-depth op)
(toplevel-mutate (ensure-toplevel (env-ref m (SetToplevel!-depth op)))
(SetToplevel!-pos op)
(ensure-primitive-value (machine-val m))))]
(toplevel-mutate! (ensure-toplevel (env-ref m (SetToplevel!-depth op)))
(SetToplevel!-pos op)
(ensure-primitive-value (machine-val m)))
m]
[(CheckToplevelBound!? op)
(let: ([a-top : toplevel (ensure-toplevel (env-ref m (CheckToplevelBound!-depth op)))])
@ -444,8 +443,8 @@
(loop (add1 i))])))
(: toplevel-mutate (toplevel Natural PrimitiveValue -> toplevel))
(define (toplevel-mutate a-top index v)
(make-toplevel (append (take (toplevel-vals a-top) index)
(list v)
(drop (toplevel-vals a-top) (add1 index)))))
(: toplevel-mutate! (toplevel Natural PrimitiveValue -> Void))
(define (toplevel-mutate! a-top index v)
(set-toplevel-vals! a-top (append (take (toplevel-vals a-top) index)
(list v)
(drop (toplevel-vals a-top) (add1 index)))))