On Wed, Jan 6, 2021 at 1:46 AM tyson andre <tysonandre...@hotmail.com>
wrote:

> Hi internals,
>
> > > > I probably brought this up in a previous thread, but I think it's
> worth
> > > > considering again here, given recent changes to the RFC:
> > > >
> > > > I think it would make more sense to introduce this as `function
> > > > array_is_list(array $array): bool`. That is, a function that only
> accepts
> > > > arrays in the first place and determines whether the given array is
> a list.
> > > >
> > > > Your RFC does mention this possibility, but I think the argument it
> makes
> > > > against it is not particularly strong, especially given the recent
> rename.
> > > > The argument is that is_array_and_list($array) is shorter than
> writing out
> > > > is_array($array) && array_is_list($array) -- that's still true, but
> with
> > > > the new name, it's really not that much shorter anymore.
> > > >
> > > > On the other hand, is_array($array) && array_is_list($array) cleanly
> > > > separates out the two predicates. If we take into account the fact
> that in
> > > > the vast majority of cases we will know a-priori that the input is an
> > > > array, just not whether it is a list, making the function
> > > > array_is_list($array) is both clearer and more concise.
> > > >
> > > >    function foo(array $array) {
> > > >        assert(array_is_list($array)); // Already know it's an
> array...
> > > >    }
> > > >
> > > >    if (is_array($value)) {
> > > >        if (array_is_list($value)) { // Already know it's an array...
> > > >            return serialize_as_list($value);
> > > >        } else {
> > > >            return serialize_as_dict($value);
> > > >        }
> > > >    }
> > > >
> > > > Regards,
> > > > Nikita
> > >
> > > I like array_is_list(array $array): bool much better, too.
> >
> > After seeing the discussion about confusion with potential `list`/`vec`
> types, the potential for confusion with ArrayObject/SplDoublyLinkedList,
> > and the likeliness that this will usually be called on values that are
> already known to be arrays,
> > `array_is_list(array $array): bool` seems like a better option - it's
> better to throw a TypeError for objects
> > despite the slight inconvenience of potentially needing to rule out
> null/false.
> >
> > I plan to update the RFC/implementation soon.
>
> The RFC https://wiki.php.net/rfc/is_list and the implementation has been
> updated.
> The signature has changed from `is_array_and_list($value): bool`
> to `array_is_list(array $array): bool`
>

Thanks, the updated RFC looks good to me.

Nikita

Reply via email to