Thu Aug 16 17:35:27 CEST 2007
the royal DIP
i guess the solotion is to use 'dip' from base to create state syntax
abstractions. and maybe, to add an optimization that:
does not create an extra lambda, but returns the primitive + right away.
i guess the optimization can be left until later..
the idea is to make the delegate compiler abstract. this requires
quite some change, but should make the code a lot simpler.. it would
also fix the annotation problem mentioned above.
(ns-base-stx badnop: (badnop) base:)
(ns-base-stx badnop: ((badnop) (base)))
let's call this 'extend-base-stx'
haha. gotcha! of course, the delegate: is a static thing, and the
namespace delegation is a dynamic thing, so there's no way to compile
this: the information necessary to decide about delegation or not is
not available at compile time, when the deligation needs to be
it needs to work the other way around !!!
if a symbol is not defined at compile time, the resolution can be
postponed until runtime.
so i guess the gentle way to move things to static implementation is
to use the 'module-local?' predicate mentioned before. that way
module-local symbols can bind first, and cannot be overridden.
the number of methods in the compiler is getting larger. maybe use
real objects? prototypes?
also, if i use a decent prefix, symbol capture is not a real problem,
so i can put it on always? maybe just a dot or a pound sign..