
We did intend to allow ``` (int, str = ...) -> float ``` in hybrid syntax, because positional-only arguments *must* be nameless in hybrid as proposed. ## Mixed Syntax I added another option "mixed" to the doc I tried to capture my understanding of your suggestions: - allows nameless positional-only arguments as long as they don't have default values - optionally lets users specify names as in stub-style, but in that case a `/` is required - forces users to specify a name (possibly just _) for a positional-only argument with default So in mixed (assuming we allow `_`), the signature above could be written as either ``` (int, _: str = ..., /) -> float ``` or ``` (_: int, _: str = ..., /) -> float ``` I think I like the mixed idea. It has most of the benefits of hybrid syntax: - simple callables are compact - it has a canonical representation without nuisance parameters we can use in type errors - we can mostly avoid `/` (my guess is that positional-with-default args are pretty rare) There are multiple options for how users can represent a type, which is the big drawback. But allowing folks to name their positional arguments means they can make callback types much more self-documenting, since a name plus a type can express what a callback is supposed to do much better than a type signature alone. Obviously library authors tend to put this information in docstrings, but having it as part of the callback type would mean the argument names can be available in type error messages and IDE hovers.