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, >>>> >>>> >>>> >>> >>