I always thought having a working program should be opt-out, not opt-in.
(For example, my ideal language supports dynamic typing, with the compiler directive #jammode, or alternatively #explodeinprod)
I always thought having a working program should be opt-out, not opt-in.
(For example, my ideal language supports dynamic typing, with the compiler directive #jammode, or alternatively #explodeinprod)
Part of the problem is `pure` is transitive, i.e. a pure function calling an impure one is not allowed. This makes it hard to incrementally make the code pure.
But when one succeeds at it, it is very satisfying.
There is an escape hatch, however. Prefixing a statement with `debug` allows the dependent statement to be impure. This is very handy when one needs to insert some print statements to debug a program. (Calls to printf are impure!)
By the way, hi again! We chatted briefly in person after Handmade Seattle 2021, and I remember being really impressed to learn that you're one of the few people (maybe the only one?) who has ever implemented a working C++ compiler solo.
Anyway, hope all is well, and let me know if you're ever interested in recording a podcast episode sometime - oss@rtfeldman.com
Anyhow, I'll be speaking at NWCPP soon:
THURSDAY, Nov 19, 2026 at 6:30 PM to 8:00 PM
Elegant D - There’s More to Programming than Getting Code to Work Bellevue City Hall, Room 1E-121 450 110th Ave NE Bellevue, WA 98004
nwcpp.org
Please come! All are welcome!
So glad to have been writing production Haskell for almost a decade
I spent a few months designing my ideal language, just based on all the pain points I ran into everywhere else. I just took all the pain, and deleted it. "Let's make it so this particular brand of suffering becomes physically impossible forever."
The result was roughly halfway between Haskell and Rust, in design-space. (Ergonomics and syntax not yet specified.)
Finally I understood what all those weird rules were for, by seeing what happens when you don't have them...
---
On that note, I have heard that certain languages are badly designed. I disagree. Badly designed implies that someone sat down, carefully thought things through, thought through the second-order consequences, and then somehow still came to all the wrong conclusions.
In several such cases it is clear that a language is not badly designed, but rather was not designed at all.