Mon Jul 21 17:28:29 CEST 2008

mark & empty

Mark probably won't work like it used to: it needs a stack of current
words.. Maybe the run-time state in pic18.ss needs to be implemented
as a stack?

 Q: Can this be implemented properly instead of hacked together? This
    means: perfect restoration of a namespace. Can the namespace
    itself be dupped?

 Q: Can we somehow serialize the namespace?

 Q: A procedure can be serialized, but a closure can't is this true?

Let's hack it together first.

Hmm.. All this depends much on what I want to accomplish. Simply put,
the only operation I'm interested in is to REPLACE some interactively
loaded code. In all cases I've working in sofar, the application
consists of:

  (C) a fixed core
  (I) incremental replacements

Here (C) is completely source-defined, while (I) is the incremental
part. Maybe this is a better model to work with than setting (C) to be
only the monitor code. Maybe 'empty' should always go right upto (C),
and not use a stack of restore points. It sounds as if it is cleaner,
but i've never used it effectively because it requires some mental
tracking while mostly you just want to start from a clean sheet.

So, let's pick the best of both worlds: no mark/empty. If you want
empty, recompile and reflash the app. This also reflects a need that
occured in the previous approach: sometimes things go bad, and what
you want is to go back to a working point fairly quickly.

Eventually, this will require custum programmers. But let's do it with
the ICD2 first.

'mark and 'empty are currently implemented in the simplest way
possible: just tracking the words. Some extra safety can be built on
top of this, but essentially, once you use 'empty the namespace and
target are out of sync.