Sat Jul 19 20:02:24 CEST 2008

functional code graphs

I'd like to move back to functional data structures for the code
graphs. There is simply too much fuss with bookkeeping, so let's move
to functional types.

* Graphs: In order to make graphs in a functional language, one needs
  to see the graph as an infinite tree. Such structures can only be
  defined in a lazy manner. In scheme, this requires explicit use of

* Unroll the updates: It is necessary to write updates as different
  data structures that refer to their parents. This involves:

    - code compilation + linking (target-word-code target-word-next)
    - assembly (target-word-address + target-word-bin)

Of course, thinking about it now, the reason this all is imperative is
that linking is simplified using the code -> word patch after
instantiation, and assembly is easy because the address and bin slots
can be updated multiple times.

Maybe this is a more sane approach: once code is marked 'old' it is
effectively frozen, and can never change (be re-compiled or
re-assembled). It is also completely concrete at that point, and
should be serializable to disk.

FIXED: made it a bit simpler, using separate *chain* and *bin* stacks
in pic18.ss

NEXT: 'upload-bin' seems to perform a binchunk-split, while this is
also done in pic18.ss : where is best?