A little arithmetic.
CPSed a calculator!
Cleanup.
Shove a continuation k into everything.
WIP: continuation needs to take the state of the world: i.e. the env and the state.
Arithmetic works on two variables.
Quoting works.
WIP: Lambdas.

As discussed with Stephan, Clojure is handling the stack via mutual
recursion between apply eval and eval. Now that I'm getting rid of that,
Lambdas themselves merely "compile" to a continuation which is unwrapped
and invoked at application time.
WIP: what happens to the args of a function?
WIP: eval-all in progress...
Eval-all using map-cps.
WIP: eval-all. k has a new signature: v env store.

Should not use some sort of half-baked map-cps. Instead, if you want
something in CPS, make a continuation that has it and then do what you
need.
Eval-all.

If you want something, just create a continuation with it.
Also, don't worry about the signature of eval. It doesn't need to return
[value env] (classic functional style, [value new-world]) because it
never returns! (The continuation, k, returns).
Lambdas: addition works, but identity doesn't.

Identity StackOverflows!
Clojures work.
Clojures work, but Y doesn't. Why??
How is Y supposed to work without `if`, genius?
Cleanup.
Manage the environment => closures => Y

Needed better tests for closures. Not only do bindings propogate down,
they also shouldn't bleed out. Once you see that in the application of a
procedure, you need to carefully manage the env bindings (i.e. revert
them back to what they were before the function began execution). Since
everything is in CPS, you've got (eventually) all the envs you could
ever want.

Thanks to @happy4crazy!
Arithmetic calculator cleanup for Hacker School presentation. Would be nice to have a calc that uses an explicit stack, i.e. tail-recursion.