[Python-ideas] Yet Another Switch-Case Syntax Proposal
Lucas Malor
7vsfeu4pxg at snkmail.com
Fri Apr 18 16:42:52 CEST 2014
On 17 April 2014 21:31, Guido van Rossum guido-at-python.org |
python-ideas-at-python.org| <gpb6b76ift at sneakemail.com> wrote:
> I don't want to discourage you too much, but I think that adding a switch
> statement comes *very* low on the list of improvements we would like to
> make in Python 3.5.
>
> We should probably focus on speed (or aspects of it, like startup),
> language features that help porting Python 2 code to it (e.g. bytes
> formatting), and things that improve the user experience of getting started
> with Python on a new machine (e.g. pip/venv).. Or perhaps stdlib issues
> like an asyncio-infused variation of WSGI.
>
I completely agree.
>
> I've probably missed a few focus areas, but I still very much doubt we'll
> be adding a switch statement -- it's a "sexy" language design issue (like
> anonymous functions) but that's not what will help Python compete.
>
Well, no, it will not be a "killer feature". But if you intend it's "sexy"
because it's a syntax sugar, even if I'm not much experienced, I
respectfully disagree. A switch-case statement is more DRY than an if-elif
chain, in its use environment. Deltas are only quicker to code and
potentially less DRY.
On 17 April 2014 23:41, Andrew Barnert abarnert-at-yahoo.com |
> python-ideas-at-python.org| <3en9kh2cbt at sneakemail.com> wrote:
> Any reason to use the keywords that only exist in C-family languages when
> the functionality isn't actually like C?
>
Well, it's the same for the "for" statement.
> - if case_expr is not a tuple, the case suite will be executed if
> switch_expr == case_expr
> > - if a case_expr is checked, any subsequent elcase statements are
> skipped, and the next case statement is performed, of there's one. This is
> completely identical to if - elif.
>
> While you can figure out what this means with a bit of work, it seems to
> add a lot of conceptual complexity, and I can't think of any other language
> that does this.
>
Bash case statement is similar. IMHO this syntax is very simple, simpler
than C-like switch statements. Why do you think it is complex?
why not consider features that other languages do have, like pattern
> matching cases?
>
I do not know much about pattern matching. Using my little knowledge,
Python have recursive functions and regular expressions. You could also use
generator expressions with my switch statement proposal. Symbolic pattern
is powerful, but it's a bit too much for this little proposal.
if you want to match (1, 'b') you'd have to write case ((1, 'b'),). Which
> is bad for static cases, and even worse for dynamic ones.
>
Yes, it's not so elegant, but I do not think that it will really matters in
real world usage. What do you mean exactly with "dynamic cases"?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20140418/63363df2/attachment.html>
More information about the Python-ideas
mailing list