Thu Jul 26 11:17:42 CEST 2007
the macro way..
let's start with some basics.
apparently structures can be used to implement behaviour of
procedures, using struct-type properties. this should be enough to
convert completely to macros.
i started cat-base.ss
so, here we go.. all the freedom is there again.
* i'm starting with one modification: low level CAT source
representation is reversed. this makes writing the macros a bit
this makes (a . b) be 'compose a AFTER composition b', so:
(pn-compose a b c) == (apply a (pn-compose b c))
* 3 phases are separated:
- compile: atom -> representation of behaviour (apply/cons)
- compose: list of words -> nested apply/cons
- abstract: application -> lambda expression
compile can be recursive due to the presence of quoted programs
* reversal is introduced early on: it's too confusing to have it
around after the nested 'apply/cons' is in place. i'm switching from
pn- to rpn- prefix at the point of abstraction (converting code to
scheme lamda expression).
* snarfs can be stolen from previous implementation. maybe the code
reversal should use a generic reverse macro too. (done)
* now all that's left is to solve the name resolution.