[Piglit] [PATCH 2/4] arb_shader_precision: add framework for calculating tolerances for complex functions
Dylan Baker
baker.dylan.c at gmail.com
Thu Feb 19 13:57:44 PST 2015
On Thu, Feb 19, 2015 at 02:27:38PM -0500, Ilia Mirkin wrote:
> On Thu, Feb 19, 2015 at 2:16 PM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> > On Thu, Feb 19, 2015 at 02:03:41PM -0500, Ilia Mirkin wrote:
> >> On Thu, Feb 19, 2015 at 12:59 PM, Dylan Baker <baker.dylan.c at gmail.com> wrote:
> >> >> + return -1.0 if any(ret['badlands']) else map(float,
> >> >> ret['component_tolerances'])
> >> >
> >> > Generally at this point python (both upstream and community) discourage
> >> > the use of map and filter, with a preference for comprehensions.
> >> > [float(x) for x in ret['component_tolerances']] should be what you want.
> >>
> >> Just to provide a counterpoint, I think that
> >>
> >> map(float, fooarray)
> >>
> >> is a ton more readable than
> >>
> >> list(float(x) for x in fooarray)
> >
> > I agree that list(generator) is ugly, which is why I suggested a list
> > comprehension, and not a generator comprehension.
>
> Ah. But with a list comprehension the variable leaks out, so I tend to
> avoid it since it can, in certain situations, create horribly
> difficult to track down bugs. But my point still stands -- I prefer
I'll concede that map() is a pretty standard concept, especially if
you've worked with functional programing languages. The leaking of
variables is a python2.x bug, it's not present in 3.x. And honestly,
if you follow good practices and don't have a lot of one letter
variables just floating in your code you're unlikely to hit a weird bug
from that value leaking.
>
> map(float, fooarray)
>
> to
>
> [float(x) for x in fooarray]
>
> Map is a pretty core concept in computer science and math, I think
> most people are familiar with it. With the comprehension, I have to
> read the whole thing carefully to see if it does something weird.
> Anyways, I think, like many things, this comes down to personal
> preference, in which case whatever the author of the code likes to do
> goes. I think that PEP8 or whatever the doc with "The One And Only
> True Way To Write Python" thing is went way too far.
>
> -ilia
I think that the "one, and preferably only one" concept is one of the
nice things about python. Coming from a background in ruby I find that
refreshing.
Anyway, since we're only using map I'll drop the suggestion.
I am however adamant that if we're using filter and map together a
comprehension is much more readable.
[f(x) for x in a_list if x is not None]
is much more readable than
filter(map(f, a_list), lambda x: x is not None)
Dylan
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <http://lists.freedesktop.org/archives/piglit/attachments/20150219/fbbb9db2/attachment.sig>
More information about the Piglit
mailing list