My recollection is that part of the indexing interface in Julia (just by
convention) is that indexing should be of O(1) (or close to that)
complexity.  Iterable things, in general, have O(n) complexity to access
the n-th element, because you have to traverse the data to get there
(the classic example are linked lists).  Thus, it makes sense that
indexing is not supported, instead you have to call collect first if you
want to index.

On Thu, 2016-06-23 at 20:43, Davide Lasagna <lasagnadav...@gmail.com> wrote:
> Hi Jacob,
>
> In my view, in principle, all "iterators" should be indexable, (at least
> read-only), *unless *the underlying data is not indexable by nature, e.g.
> with data that comes from a stream...  Doing `zip([1, 2], [2, 3])[1]`
> should probably just work.
>
> I also think that for `Zip`s if the zipped collections are not indexable,
> then the "outer" getindex method should fail internally with a MethodError,
> on the "inner" getindex calls not implemented for the non-indexable
> collections.
>
> On Thursday, June 23, 2016 at 7:23:34 PM UTC+1, Jacob Quinn wrote:
>>
>> Sorry, to clarify a little:
>>
>> The things you're zipping are not necessarily indexable (i.e. other
>> iterators), so it's not safe to assume you can always index a Zip.
>>
>> On Thu, Jun 23, 2016 at 2:21 PM, Jacob Quinn <quinn....@gmail.com
>> <javascript:>> wrote:
>>
>>> Most "iterator" types are not indexable, AFAIK. The typical
>>> recommendation/idiom is to just call `collect(itr)` if you need to
>>> specifically index.
>>>
>>> -Jacob
>>>
>>> On Thu, Jun 23, 2016 at 2:18 PM, Davide Lasagna <lasagn...@gmail.com
>>> <javascript:>> wrote:
>>>
>>>> Is there any particular reason why `Zip` objects are iterable but not
>>>> indexable? Python allows that.
>>>>
>>>> From previous discussion on the topic (2014 topic at
>>>> https://groups.google.com/forum/#!topic/julia-dev/5bgMvzJveWA) it seems
>>>> that it has not been implemented yet.
>>>>
>>>> Thanks,
>>>>
>>>>
>>>>
>>>
>>

Reply via email to