Mind-expanding worked example of partial evaluation, exploring the interpreter/compiler divide, in Scheme:
miniblog.
Related Posts
I'm still experimenting with UIs for live (sandboxed) evaluation of tests. I've realised that you really want to highlight the failing assertion, not just the failing test.
Feedback welcome :)
It's odd how lazy evaluation is generally seen as a niche design choice, yet the vast majority of languages treat `foo() || bar()` as short-circuiting.
Implementing type checking as another interpreter, with short, accessible examples: