I'm working on arity errors in Garden, my toy programming language.
Rather than just saying "expected 3, got 4 arguments", I'm trying to report where the extra argument is, or what extra argument was expected.
Related Posts
I'm coming round to the view that a main function shouldn't take arguments.
For example, in Rust you have to call std::env::args() to get CLI arguments.
This makes Hello World less verbose, and gives you more flexibility in setting up CLI argument parsers.
tap> is an elegant Clojure debugging feature: it passes the argument to any functions registered with add-tap.
You might set up a custom printer for your data type, or save values for later examination, and you can easily disable the tap too.
Rust's editions make it much easier to change syntax over changing APIs. This is probably true in other languages too.
It's a really compelling argument for keeping your stdlib small when your language reaches 1.0.