Fri Apr 25 10:22:36 EDT 2008
state extensions through shift/reset
with this shift/reset thing working for augmenting the compile state
from one straight code list to an assoc list of such, i think it might
be better to do the same with the 'data' element in the core:
everything that uses the 2stack state should use this dynamic
to extend state:
* define mixer words using 'make-breakpoint', referring to a prompt tag
* wrap such code in 'with-breakpoints'
the place to start is the control words. this needs to be made
independent of state rep anyhow.
the only one that's really problematic is 'apply' because it performs
both function application on an isolated stack + state merging.
maybe this should ignore state effects? solve later: might disappear
when state threading is done using composable continuations.
NOTE: the business of 'merging state' in the monads/JOIN operator
seems to be a generalization of assignment.
ok. so i got all explicit state reference removed. time to wrap the
whole thing in 'with-breakpoints', and turn the low level rep of scat
functions to stack only.
so.. made the change. the remaining question is "where to wrap"?
should all macros have SCAT prototype, or are they converted to a
2stack -> 2stack mapper at some point?