Re: [Python-ideas] Statements vs Expressions... why?
On Thu, 2008-09-11 at 14:56 -0400, Mike Meyer wrote:
Here's where we disagree. I love functional programming, having written 10s of thousands of lines of LISP in the past. The lack of the ability to pass around functions in Ruby is why I haven't ever written any.
You can: def a(x,y) x + y end def x(b) send(b,3,4) end puts x(:a) # 7 The semantics are a bit different, but the result is the same (caveat: I'm no Ruby expert by any stretch of the imagination). Anyway, not important =)
And I consider the results of trying to cram python statements into expressions as almost universally ugly. I'm willing to consider you might have a solution, but you refuse to *show* it to me.
I'm not sure what else you'd like to see. I've provided an example with a for-loop as generator and if-expressions. I've no intention of writing a full PEP covering all use-cases at this point.
Overall, if you are familiar with functional programming, it doesn't take a lot to imagine more examples. If you aren't, then it probably won't make much sense or seem too appealing in any case.
You're right - it's easy to image in more examples. Really, really ugly ones, like:
a = ( if x < 23: 18 else: 24 ) + ( if y < 23: 29 else: 81 )
The thought of running into something like the above in production code is enough to make me bounce pretty much any proposal that would allow it. Compared to that,
a = (18 if x < 23 else 24) + (29 if y < 23 else 81)
a = ( if x < 23: 18 else: 24 ) + ( if y < 23: 29 else: 81 ) Granted, today this is not valid Python, but supporting it doesn't seem to break existing Python code either. This is precisely how Logix does it (from the page I linked you to earlier): x = if 2+2==4: "I thought so" else: "hmmm..." In any case, your above code seems intentionally formatted to be unreadable, something that could be achieved under any circumstances. For example, here's your code reformatted in a fashion similar to your first example: a = ( 18 if x < 23 else 24 ) + ( 29 if y < 23 else 81 ) Just as unreadable (although really I don't find it terrible to comprehend... certainly no worse than a complicated listcomp). At the end of the day, no programming language is going to be able to enforce sane coding style (even Python's whitespace can be circumvented to a large degree). What we do gain with the idea I've forwarded is a single, more flexible if-expression in place of an if-statement and an if-operator with inverted syntax. Regards, Cliff
participants (1)
-
Cliff Wells