Yes I am proposing something like protocol Subscriptable that defines the subscript operation and indices and entries properties.<br><br>On Sunday, 17 April 2016, Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com">brent@architechies.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">&gt; With the above definition I would suggest a name change to entries, since a Dictionary&#39;s keys are not necessarily numbers, hence enumerate is misleading.<br>
&gt;<br>
&gt; Nothing for Set since it isn&#39;t subscriptable.<br>
<br>
I think you&#39;re slightly confused. All Collections have an Index. Dictionary&#39;s Index is not its Key; it is an opaque type which references an entry in its internal table. Set also has an Index; again, it is an opaque type which references an entry in its internal table. Your `enumerate()` (or my `indexed()`) would return these opaque `Index`es on all of these types.<br>
<br>
If you want Array to return `(Int, Element)`, Dictionary to return `(Key, Value)`, and Set to not have the operation at all, you&#39;re describing something ad-hoc and entirely disconnected from the Collection type.<br>
<br>
--<br>
Brent Royal-Gordon<br>
Architechies<br>
<br>
</blockquote><br><br>-- <br>-- Howard.<br>