Thu Mar 15 15:56:08 EDT 2007
delayed evaluation forced in assembler
there is already one kind: symbolic constants. the addition that needs
to be made is generic expressions. there are several forms to
- symbolic lisp expressions
- symbolic cat expressions
- scheme closures
the first one are nice since they are symbolic, so easier
debugging. the last one might be simpler to implement. lisp style
expressions make more sense here since they have a single value, not a
now, this can be combined with the paper on partial evaluation:
partial evaluation should then be transformed to compile time meta
1 2 + -> [ 1 2 + ]L
following colorForth, executed code always results in a literal on the
ok, so this fixes the question above:
* delayed code is symbolic cat.
* assembler does final evaluation of this code
so what is the context?
machine constant -> number
variable name -> data addresses
forth words -> code address
operations come from some dictionary, probably cat, but need to be
escaped somehow. let's say: search meta first, then variables, words,
this needs some changes:
* the assembler needs to be a CAT word, so the stack can be used as
* it's probably better to wrap all symbolic names in a list, so the
evaluation is uniform: either numbers or lists.
this seems to work pretty well.