Hi.
It would be great to be able to reverse usage/definition parts in haskell-way with "where" keyword. Since Python 3 would miss lambda, that would be extremly useful for creating readable sources.
Usage could be something like:
>>> res = [ f(i) for i in objects ] where: >>> def f(x): >>> #do something
or
>>> print words[3], words[5] where: >>> words = input.split()
- defining variables in "where" block would restrict their visibility to one expression
How often is this really necessary? Could you describe some benefits of this? I think the only time I've ever run into scoping problems is with lambda, e.g.
[lambda x: f(x) for x, f in lst]
instead of
[lambda x, f=f: for x, f in lst]
Are there other situations where you run into these kinds of problems?
- it's more easy to read sources when you know which part you can skip, compare to
>>> def f(x): >>> #do something >>> res = [ f(i) for i in objects ]
in this case you read definition of "f" before you know something about it usage.
Hmm... This seems very heavily a matter of personal preference. I find that your where clause makes me skip the 'res' assignment to read what the 'res' block contains. I had to read it twice before I actually looked at the list comprehension. Of course, I'm sure I could be retrained to read it the right way, but until I see some real benefit from it, I'd rather not have to.
TOOWTDI-ily-yrs,
Steve -- http://mail.python.org/mailman/listinfo/python-list