Actually about PEP 202 (listcomps), not (was RE: [Python-Dev] Lukewarm about range literals)

Fredrik Lundh fredrik@pythonware.com
Tue, 29 Aug 2000 13:49:17 +0200


thomas wrote:
> > Saving two characters (":" vs "for") isn't worth it in Python.  The
> > vertical bar *would* be "worth it" to me, because that's what's used in
> > SETL, Haskell *and* common mathematical practice for "such that".  Alas,
> > as Guido is sure to point out, that's too hard to parse
>
> It's impossible to parse, of course, unless you require the parentheses
> around the expression preceding it :)
>
> [ (n) | n in range(100) if n%2 ]

I'm pretty sure Tim meant "|" instead of "if".  the SETL syntax is:

    [ n : n in range(100) | n%2 ]

(that is, ":" instead of for, and "|" or "st" instead of "if".  and yes,
they have nice range literals too, so don't take that "range" too
literal ;-)

in SETL, that can also be abbreviated to:

    [ n in range(100) | n%2 ]

which, of course, is a perfectly valid (though slightly obscure)
python expression...

</F>