Re: [VOTE] PHP\iterable\any() and all() on iterables

From: Date: Mon, 08 Feb 2021 18:02:01 +0000
Subject: Re: [VOTE] PHP\iterable\any() and all() on iterables
References: 1 2  Groups: php.internals 
Request: Send a blank email to internals+get-113115@lists.php.net to get a copy of this message
Hi Larry Garfield, > > Hi internals, > > > > Voting has started on > > https://wiki.php.net/rfc/any_all_on_iterable and > > ends on 2021-02-22. > > > > This RFC proposes to add the functions `PHP\iterable\any(iterable > > $input, ?callable $callback = null): bool and > > PHP\iterable\all(...)` > > to PHP's standard library's function set, using the namespace preferred > > in the previous straw poll. > > > > There is a primary vote on whether to add the functions, and a > > secondary vote on the name to use within the PHP\iterable > > namespace. > > > > Thanks, > > - Tyson > > -- > > PHP Internals - PHP Runtime Development Mailing List > > To unsubscribe, visit: https://www.php.net/unsub.php > > > Ak!  I literally just finished reading it and wanted to note a lack of clarity on one point. > :-) > > The signature of the callback is never specified explicitly.  The ternary is a bit > confusing.  I assume the signature is > > callable(mixed): bool > > But that's not made explicit.  It's also not made explict that omitting the callable > collapses to "is truthy".  That's a sensible thing to do, but it's not stated > explicitly anywhere, just inferred from the code sample. > > I'm not sure if it's safe to clarify at this point as the vote just started. If there is a callable, it allows callable(mixed): mixed, and converts the callable's return value to a boolean. So omitting the callable is the same as passing in the callable fn($x) => $x, which is equivalent to fn($x) => (bool)$x. This is exactly what the reference implementation would do. I definitely should have clarified it instead of assuming that the reference implementation was clear enough. I clarified this and gave examples because the RFC started a few hours ago and the implementation didn't change. - Tyson

« previous php.internals (#113115) next »