Fri Feb 20 15:29:19 CET 2009
Macros and such
Some important ideas that need to be cleared out
- Lisp vs. other syntax and quasiquotation.
As opposed to what I used to think, Lisp syntax is only _convenient_
for quasiquotation based metaprogramming, but not at all
_necessary_. This is illustrated by MetaOcaml's syntax extensions.
One just needs to extend the parser basicly.
- Pre-checks: giving semantics to the macro INPUT instead of
"specification by compiler"
As explained , untyped macros can be made much more useful when
they can be combined with static semantics. This is a very powerful
idea: bottom up _typed_ language design.
- MetaOcaml approach: limited to bind and eval, no other constructs?
In dynamic vs. static: A big advantage of Lisp/Scheme style macros
is that ALL langauge constructs can be expanded to. In MetaOcaml
only EVALUATION TIME of nested expressions can be manipulated, but
the expressions themselves are really only let, lambda and apply.