Fri Apr 5 16:30:43 EDT 2019

Look at the geometry of the problem

For a simple state machine, that's a graph.  For a push-down
automaton, that's something else.

There are actually two things that make a CPU approach simple:

- sequential programming
- subroutines (parameterized repetition)

Subroutines are mostly useful as a compression step.  It is part of
the incremental solving of a problem, adding to the solution when
there is already something there.  Maybe leave this as step two?

So what is step one?

- Write some pseudocode.
- Coalesce everything that can be parallellized
- Write an explicit state diagram for this (in Haskell)
- Compile that down to a bit-level implementation.

So start by encoding the program and the opcodes as a data type.

I need an example state machine.