Hi internals,

> > > So I'm probably changing this to `ImmutableTraversable` as a short name 
> > > for the functionality,
> > > to make it clear arguments are eagerly evaluated when it is created.
> > > (ImmutableSequence may be expected to only contain values, and would be 
> > > confused with the ds PECL's 
> > > https://www.php.net/manual/en/class.ds-sequence.php)
> >
> > Hello,
> >
> > And why not simply RewindableIterator ? Isn't it the prominent feature
> > of it ?
> >
> > Agreed it's immutable, but a lot of traversable could be as well.
> 
> All iterators are "rewindable", though of course not in practice. I
> would avoid such names because we may eventually add an interface
> which works as a "tag" to say "yes, I actually do support rewinding."
> 
> The property of being rewindable comes from it being cached. Maybe
> `CachedAggregate`? Aggregates are data structures from which an
> external iterator can be obtained, so it makes a bit more sense if
> it's eager.

I think CachedAggregate would have problems with an unclear meaning similar to 
those that were raised previously in https://externals.io/message/114819#114798
(Some developers would think it may refer to the act of lazily evaluating the 
iterable(caching it on-demand to access later))

https://en.wikipedia.org/wiki/Aggregate on its own refers to a collection of 
objects/values
or in other contexts, functions such as count/sum/min/max 
https://en.wikipedia.org/wiki/Aggregate_function 

- In other contexts such as set theory, there might not be keys associated with 
the values
  so aggregate on its own seems unclear.

ImmutableIteratorAggregate or just ImmutableIterable/ImmutableTraversable makes 
more sense than `Cached*` to me.
ImmutableKeyValueSequence is an even shorter name than 
ImmutableIteratorAggregate and describes what the data structure is.

Thanks,
Tysosn

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

Reply via email to