Miscellaneous thoughts on this:

- Working to have a vote on https://github.com/php/php-src/pull/4886 might be a 
good first step, and something I was personally interested in seeing in 8.0-dev.
  However, in the event you can't rule out that is_array($listParam) might not 
return true in the final implementation you decide on, maybe wait. (you said 
it'd be a subtype, and it seems like a lot of code would break, so that seems 
unlikely)
- How would array_shift(), array_merge(array, list), array_intersect, etc., 
preg_match(), etc be handled? Would they return lists or arrays?
- I'd really have liked to see data structures such as sets, variable-length 
vectors, etc. in core natively available as objects (or other types, but 
objects seemed the most practical).
  Right now, there's php-ds https://www.php.net/manual/en/book.ds.php , but if 
I wanted to use vec/list in an application/library that was used in a wide 
variety of places, I'd really rather have something in core. (the drawbacks of 
using a polyfill would outweigh the performance benefits for a small fraction 
of adopters)
- If those data types were natively available, maybe opcache and/or the jit 
could use specialized opcodes to reduce the overhead of offsetGet, etc., if the 
class was known.
- References to list iyped properties `class X { public list $list; } $x->list 
= &$localVar; unset($localVar[1]);` may cause problems in implementation 
details if they're a subtype of arrays.
   Forbidding them in typed properties and limiting the type to params and 
return types may work.
- Having them limited to param type and return type checks (including some 
internal global function return types) would be how I'd prefer it (instead of 
adding a separate type elsewhere)
  PHP already has special handling for iterable/callable.
- Future scope of a list type hint might be to add a deprecation notice for 
`list ($x, $y) = $array` or `foreach ($x as list($y)) to avoid confusion
  (even though it's currently unambiguous, and that probably will remain 
unambiguous)

- Tyson
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to