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 [1], 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.

[1] http://www.cc.gatech.edu/~dfisher/ziggurat/icfp-ziggurat.tar.gz