The analysis monad consists of the following
RWST components:
- Env: Reader-like context. Contains a substitution, info
about how how lifted identifiers are to be expanded into applications
and configuration options.
- OrdList FloatLang: Writer output for the
resulting STG program.
- No pure state component
- But wrapping around UniqSM for generating fresh lifted
binders. (The uniqAway approach could give the same name to
two different lifted binders, so this is necessary.)