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.