
Thanks for writing the document. It's a very helpful step forward. One thing that occurs to me is that all of the syntax proposals create ambiguities when the `->` operator is combined with `|` (union). The order of precedence between `->` and `|` would need to be established and documented, and parentheses would need to be supported to override the normal precedence. Take this example: ```python # Does this mean `Union[Callable[[int], int], str]` or `Callable[[int], Union[int, str]]`? (int) -> int | str # With parentheses, it is unambiguous. ((int) -> int) | str (int) -> (int | str) ``` For what it's worth, TypeScript chose to bind `|` more tightly. If we were to adopt this precedent, `(int) -> int | str` would imply `(int) -> (int | str)`. -Eric