Sun Jan 16 11:28:00 EST 2011

Reasoning About Staged Programs

In [1] the importance of value sharing is stressed: ``... the code
duplication problem, which is among the most common pitfalls of

Also mentioned that ``Monadic staging essentially does Common
Subexpression Elimination (CSE) on the generated code.''  I don't
immediately see that, as that needs equality relations for
code.  In MetaOCaml this is not the obvious `==' and `=' :

# .<1>. == .<1>. ;;
- : bool = false

# .<123>. = .<123>. ;;
- : bool = false

So which one is it?  Maybe what is mentioned in the paper is just
based on pointer equality, but in that case it is not CSE as it only
works for expressions that where common in the generator.

[1] http://www.owlnet.rice.edu/~ji2/papers/staging-proof-techreport.pdf