Sat Aug 25 11:45:01 CEST 2007

fully declarative and compositional


all names defined in a source file are to be know
before the body of the code is compiled. that way, a program is a
collection of definitions.


make all branching constructs fit the compositional view by using
combinators only.

both are largely independent, but should lead to a better
representation. advantages:

- side-effect free macros
- detection of undefined words
- possibility of modularization (later)

- correct optimizations in the light of branching

let's learn a lesson from the past.. i can't afford to break it
again. the changes that need to be made can be made without changing
the semantics so much that a radical rewrite of forth code is
necessary. all constructs used at this moment need to be preserved.

is there an incremental path? the following syntactic transformations
are necessary:

1. constant -> macro
2. variable -> macro
3. word definition -> macro
4. split a file into macro + code