What a nice read! It’s particularly nice that we can see each separate optimization, the rationale for it, and the result.
I wonder if there are any optimizations that are specific to lazily evaluated languages like Haskell. I remember reading about introducing eager evaluation to prevent a buildup of unevaluated thunks. That was a trick for memory usage, but perhaps there are tricks for performance, as well.
Thanks for sharing!
I’m super curious where sixten and sixty end up and I’d be happy to read more!