
I'd like to recap what I understand from discussion so far ## Stub-like syntax A full stub-like syntax. On a complex example it would look something like this: ``` (a, b: int, c: float = ..., /, d: str, e: str | None = ..., *args: int, f: bool = ..., **kwargs: str) -> int ``` where - we might allow the duplicate use of `_` as argument names where they aren't part of the type - we might require an explicit Any for untyped arguments like `a` If we did both of those, the example above might instead look like: ``` (_: Any, _: int, _: float = ..., /, d: str, e: str | None = ..., *args: int, f: bool = ..., **kwargs: str) -> int ``` ## Compact syntax Compact syntax, which there's some debate about, like ``` (int, str) -> float ``` which we could either restrict to all-positional or allow in general, so that equivalent to the above would be: ``` (Any, Int, float = ..., /, d: str, e: str | None = ..., *args: int, f: bool = ..., **kwargs: str) -> int ``` I'll try to put together some examples of existing Callable types as well as some functions from github so we can get a little more taste for these alternatives