Sat Jan 18 20:58:48 CET 2020


I get stuck very quickly.  Too many issues at once.
Some notes:

- I can't see the consequences of implementing higher order functions,
  so implement only higher order "forms", such as iteration.  This can
  be just goto.

- However, I still want function calls to properly abstract over
  blocking operations.

Can I do this instead with abstract inerpretation?

Execute the program, produce a trace, and from the trace produce the
stack data structures.

Insisting on ANF and closures will make it too difficult to keep C

Just a stack.  Nothing fancy.

Start with what can be done using a stack:

- Non tail call function application (append to stack, hide).

- Non tail call "form inline" (append to stack, keep context)

- Tail call: replace part of stack

- Tail call "form inline" (same, keeping context).

These are 4 operations.

- call
- form inline
- tail call


- "hiding" is only necessary when it is possible to have name clashes.

- inlined forms are interesting, elaborate on that