Every time I implement an interpreter with recursion, I regret it.
As soon as I want TCO, or userland control of stack limits, or resumable exceptions, I need my own stack.
This is awkward because it's an upfront design decision. Changing the stack model is a big refactoring.
miniblog.
Related Posts
Should lint suppressions be first class syntax or comments?
Adding a proper metadata system (e.g. Clojure or Rust) is a big design space but it's clear which expressions are affected.
Comments are much easier to implement but it's easy for users to get them wrong.
Thoughts?
I've added basic sum types to my programming language project, and it simplifies a bunch of stuff. Bool and Unit no longer need to be built-in types!
I'm now working on wrapped data, so I can implement Option :)
I have mixed feelings about the equality trait in Rust.
I have types where sometimes I want to compare by structure, and sometimes compare by reference.
I can only implement Eq for one, so which do I pick?