Re: Re: [RFC] Iterable

From: Date: Mon, 13 Jun 2016 16:52:33 +0000
Subject: Re: Re: [RFC] Iterable
References: 1 2 3  Groups: php.internals 
Request: Send a blank email to internals+get-93942@lists.php.net to get a copy of this message
On 13.06.2016 at 17:59, Levi Morrison wrote: > On Mon, Jun 13, 2016 at 5:42 AM, Christoph Becker <cmbecker69@gmx.de> wrote: >> On 11.06.2016 at 01:37, Aaron Piotrowski wrote: >>> I would like to propose a new iterable pseudo-type that accepts both arrays and objects >>> implementing Traversable. Values accepted by iterable can then be used with foreach and yield from, >>> or help to reduce type-checking logic in general. >>> >>> Please review the RFC here: >>> https://wiki.php.net/rfc/iterable >>> <https://wiki.php.net/rfc/iterable> >> >> Thanks, Aaron! I definitely like this idea (I'm not sure about the >> details yet – would have to thoroughly investigate), as it is apparently >> solving a long-standing issue, and is in my opinion a cleaner solution >> than (explicitly) having to resort to a union type. > > My opinion is contrary: the union type is the cleaner solution as it > does not require special casing machinery in the engine. I agree that union types are the cleaner solution with regard to the (C) implementation. I don't think, though, that they are the cleaner solution with regard to PHP code; a developer has to think twice which guarantees a union types gives regarding the allowed operations. For instance, what would Foo|Bar guarantee? I would have to look up both respective definitions and find the intersection – and that still leaves room for errors, as operations with the same name do not guarantee equivalent behavior. The special case of reading and understanding Traversable|array might quickly get second nature for developers, but it's still ugly to write and read, in my opinion. -- Christoph M. Becker

« previous php.internals (#93942) next »