Thu Jun 19 09:12:11 CEST 2008
doubts about compilation
I'm wondering wether it isn't better to keep macro code representation
in list form. The assembler output is again a concatenative language
in source form, so why doesn't it have the same form as the input?
Also, maybe the eager algorithm is too simple?
The problem is that given a composition [a b c] it could be split as
[ab c] or [a bc]. One could be significantly simpler than the other
syntactically, while semantically they denote the same function. An
eager algorithm is always going to pick the first option. This is the
reason why some rewriting operations are postponed to a next pass.
More specifically: the multipass algorithm now is a simplification
of a general non-deterministic algorithm that optimizes ideal
combination of terms.
Maybe multiple passes need to be defined more abstractly?