Re: [julia-users] General question on indexing

2015-11-15 Thread Tim Holy
I don't think there's an obvious "policy" in place for this, but in general 
I'd agree that it's better foo[i] == collect(foo)[i].

But there's no reason you can't have different types of iterators that visit 
different types of edges:

for edge in all_edges(graph)
# visits symmetric edges twice
end

for edge in unique_edges(graph)
# visits only the ones with d Is it always expected that foo[i] == collect(foo)[i]? I'm running into a
> bit of an issue with undirected graphs where this may not be the case for
> collections of graph edges, and I'm wondering how much time I should sink
> into fixing a problem that might not even exist.
> 
> The discrepancy is with an edge (s,d) where s > d - in the iterator they're
> ignored in undirected graphs since we represent it as d,s in this case
> (smaller vertex first), but in the adjacency list that is used to build the
> getindex, they're both there. So we can have Edge(20,10) in edges(graph) be
> true, but Edge(20,10) in collect(edges(graph)) be false (Edge(10,20) will
> be in the collection).
> 
> Thanks for any input.



[julia-users] General question on indexing

2015-11-13 Thread Seth
Is it always expected that foo[i] == collect(foo)[i]? I'm running into a 
bit of an issue with undirected graphs where this may not be the case for 
collections of graph edges, and I'm wondering how much time I should sink 
into fixing a problem that might not even exist.

The discrepancy is with an edge (s,d) where s > d - in the iterator they're 
ignored in undirected graphs since we represent it as d,s in this case 
(smaller vertex first), but in the adjacency list that is used to build the 
getindex, they're both there. So we can have Edge(20,10) in edges(graph) be 
true, but Edge(20,10) in collect(edges(graph)) be false (Edge(10,20) will 
be in the collection).

Thanks for any input.