On Aug 29, 2019, at 05:25, Philippe Prados <philippe.pra...@gmail.com> wrote:
> 
> Hello everybody,
> Scala 3 propose the a new syntax for Union type. See here. I propose to add a 
> similar syntax in Python.
> # Operator for Union
> assert( int | str == Union[int,str])
> assert( int | str | float == Union[int,str,float])
> # Operator for Optional
> assert( ~int == Optional[int])

One immediate problem here is that you’d have to add methods to the builtin 
type type or this would be illegal at runtime. Which means you couldn’t use 
this feature in Python 3.7, much less 2.7. I’m not sure it maintaining backward 
compatibility in typing and in mypy is still as important today as it was 5 
years ago, but I’m pretty sure it hasn’t been abandoned entirely.

Also, for ~, that seems pretty misleading. | means union, and not just in 
Python. And I’m pretty sure it’s the most common way to spell union/sum types 
and related things across languages. So, str|int isn’t just easier to type, it 
should actually aid comprehension. But ~ means complement, which is a 
completely different thing from |None. And the most common way to spell 
Optional as an operator across languages is ?. Of course I wouldn’t actually 
expect ~a to mean “any type but a”, but only because of the meta-thought that 
such a declaration would be completely useless so you must have intended 
something different. So ~int seems like it would actually harm comprehension 
instead of helping. 

Also, IIRC, multiple shorthands for both Union and Optional were suggested back 
during the original discussion, including str|int and {str,int} (which doesn’t 
have the backward compatibility problem) and maybe others. If they were all 
rejected, the reasoning is probably in the list archives or the GitHub issues 
repo, so if you want to re-suggest one of them, you probably want to find the 
original rejection and explain why it no longer applies.
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/LA4SDERW4A7RGKAQNEMV6NB3BIMN54TB/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to