This research is related to the Koka programming language: <a href="https://koka-lang.github.io/koka/doc/" rel="nofollow noreferrer">https://koka-lang.github.io/koka/doc/</a>
This is also used in Lean 4, which as it turns out is not just great for math proofs, but is also becoming a great general purpose programming language
Interesting article, I wonder if FIP procedures could be useful even in non functional oriented languages as a safer means of reusing allocations (in languages that support reference counting or ownership?).
Noob question: the Top type here is exactly the Node constructor of the stree type. It seems useful to declare a type that is “this ADT, but limited to these constructors”, but even Haskell seems to avoid it. Why?
I mean, `jq` does in-place mutations when the values being mutated have just one reference. With a lot of care one can really make that shine. `jq` has been doing this since day 1, years ago, though it's had a few bugs in `reduce` that had to get fixed.