Highly customizable APIs need to somehow expose a long list of parameters that may be set, and will want to add new parameters in a backwards compatible way. Optional arguments allow that to be expressed in a single function.
From the caller side, you may ergonomically provide any subset of the optional arguments and are able to express your own uncertainty about the value. Reasoning about call sites remains simple as it's easy to tell if you're dealing with optional arguments or not.
In the ecosystem, many uses of the builder pattern can be identified as a need for this feature.
This RFC proposes that optional arguments be named. It does not propose named arguments as a general feature, leaving that as an extension. The reason to propose optional arguments first and named arguments as an extension is that optional arguments add less reasoning complexity than named aguments. [As a wise man once put it](https://inter