5 ms·
The problem is, python list comprehensions are very... specific. Add to that the brokenness of if...else and you get a very quirky and specific sublanguage that
by aib 8y ago
The problem is, python list comprehensions are very... specific. Add to that the brokenness of if...else and you get a very quirky and specific sublanguage that is hard for outsiders to read. And this is before we take into account the locals/scope/clojure discussion in the link and the PEP (which I frankly did not bother to read.)
On the other hand, you have a concept which translates easily to any language with first-class functions and lambdas. Even the syntax stays the same among languages which use "f(x,y)" for function evaluation and parameter passing.
/* This post is for those occasions when a list comprehension style is advocated over a functional style, which I know was not necessarily what you were doing in your comment. But I think the two points are valid enough on their own. */
- kstrauser 8y ago> Add to that the brokenness of if...else Could you elaborate on that?
- aib 8y ago> > Add to that the brokenness of if...else > Could you elaborate on that? It's a very opinionated statement on my part. `if COND then TRUE-CASE else FALSE-CASE` is the correct form to use, in my opinion. Python uses `TRUE-CASE if COND else FALSE-CASE`.
- hellofunk 8y agoConventional if statements in Python do use your preferred form of `if COND then TRUE-CASE else FALSE-CASE`. What you are talking about is a different kind of expression, similar to a ternary operator. It is not the same as if...else
- aib 8y agoThe reason it's not the same as if...else is that it's freaking backwards :D
- hellofunk 8y agoYou said: > Python uses `TRUE-CASE if COND else FALSE-CASE`. And this is wrong -- this is not how Python if statements work.
- aib 8y ago> > Python uses `TRUE-CASE if COND else FALSE-CASE`. > And this is wrong -- this is not how Python if statements work. Huh? Didn't you yourself say I was not talking about if statements: > What you are talking about is a different kind of expression, similar to a ternary operator. It is not the same as if...else In any case, I'm talking about the case that goes `TRUE-CASE if COND else FALSE-CASE`, as can be deduced from my typing `TRUE-CASE if COND else FALSE-CASE`.