[Python-ideas] custom predicate for all() & any()

Sven R. Kunze srkunze at mail.de
Tue Mar 29 14:35:01 EDT 2016


On 29.03.2016 19:48, Michael Selik wrote:
>
>
> On Tue, Mar 29, 2016 at 9:15 AM Sven R. Kunze <srkunze at mail.de 
> <mailto:srkunze at mail.de>> wrote:
>
>     On 26.03.2016 18:04, Terry Reedy wrote:
>     > So proposed all(iterable, predicate) == all(map(predicate,
>     iterable))
>
>     I am no native English speaker. Is predicate the right word for this?
>
>
> I'm not sure being a native speaker would help in this case. :-)
>
> One reasonably common definition of "predicate": a function that tests 
> a condition on a value and returns True/False. Some folks define it 
> more broadly, but then the word loses its usefulness as distinct from 
> other kinds of functions. The usage of "predicate" here comes from 
> predicate logic, or more specifically the usage of the term in 
> languages like Lisp. Where Python says ``'42'.isnumeric()`` a lisper 
> might say ``(numberp 42)``, the "p" suffix indicating that it's a 
> predicate function.
>
> https://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node69.html

I see. That was why I would associate "predicate" more with filter than 
with map.

>     I get the feeling we would rebuilding things over and over again: list
>     comprehensions, filter, map, itertools, for-loops etc.
>
>
> Certainly feels like it.

:)

>     I think the underlying issue is the number of parentheses involved. I
>     myself somehow avoid nesting too many function calls into one line
>     just
>     because of that; not because of the complexity involved but because it
>     looks strange.
>
>
> Same here. But I don't mind the occasional throwaway variable. When 
> it's a multi-step process, a good name for an intermediate stage helps 
> me think.

Yep. That is how it should be done then.

>     Of course the number of parentheses involved is an
>     indicator of the complexity. Not sure if there is another way of
>     handling this; maybe piping or something. Would be great if we could
>     avoid writing ))) or ))))).
>
>
> http://xkcd.com/297/

:D
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160329/ffa2ea41/attachment-0001.html>


More information about the Python-ideas mailing list