
On Thu, Aug 28, 2008 at 11:33 PM, Cesare Di Mauro <cesare.dimauro@a-tono.com> wrote:
On 28 agu 2008 at 22:37:20, Terry Reedy <tjreedy@udel.edu> wrote:
To parallel the Haskell-ish example, this should be
[stripped for l in text.split('/n') stripped as l.strip() if stripped != '']
but the clause has 'as' in the middle instead of at the beginning, making it hard to parse. Haskell used commas
[stripped for l in text.split('/n'), stripped as l.strip(), if stripped != '']
but I think this would conflict with Python's other comma usage. Most feasible, I think, would be
[stripped for l in text.split('/n') with stripped as l.strip() if stripped != '']
This corresponds to the multi-statement for loop version
_=[] for l in text.split('\n'): stripped = l.strip() if stripped != '': _.append(stripped)
with 'stripped = l.strip()' replaced by 'with stripped as l.strip()'. If other use cases were presented that could not be more easily written otherwise, as with the re.split() version, I might at least be neutral on this.
Terry Jan Reedy
We already a "with Expression as Identifier" syntax that is well known and used in Python: why use something different?
[stripped for l in text.split('\n') with l.strip() as stripped if stripped != '']
will be a much better syntax to parse and acquire for a typical pythonista. ;)
Just because it exists, doesn't mean that it's "well known and used". Also, don't conflate the need to handle context management (locking, closing files, etc.) with the false perceived need to add temporary assignments in list comprehensions and generator expressions. - Josiah