From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=unavailable autolearn_force=no version=3.4.4 Path: eternal-september.org!reader01.eternal-september.org!reader02.eternal-september.org!news.eternal-september.org!mx02.eternal-september.org!feeder.eternal-september.org!gegeweb.org!news.ecp.fr!news.jacob-sparre.dk!loke.jacob-sparre.dk!pnx.dk!.POSTED!not-for-mail From: "Randy Brukardt" Newsgroups: comp.lang.ada Subject: Re: A few questions Date: Thu, 12 Nov 2015 15:15:45 -0600 Organization: JSA Research & Innovation Message-ID: References: NNTP-Posting-Host: rrsoftware.com X-Trace: loke.gir.dk 1447362947 18764 24.196.82.226 (12 Nov 2015 21:15:47 GMT) X-Complaints-To: news@jacob-sparre.dk NNTP-Posting-Date: Thu, 12 Nov 2015 21:15:47 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-RFC2646: Format=Flowed; Original X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 Xref: news.eternal-september.org comp.lang.ada:28340 Date: 2015-11-12T15:15:45-06:00 List-Id: "Dmitry A. Kazakov" wrote in message news:hs9mu83acmqt$.5liwfglzrr7q.dlg@40tude.net... > On Thu, 12 Nov 2015 12:28:46 -0600, Randy Brukardt wrote: > >> Personally, I find the "of" form unnecessary; we've iterated arrays for >> decades without direct access to the element (using the "cursor", that is >> the array index), so why are containers different? > > Of course it is different. Index does not iterate array, it does the > array's index range. That is the difference. > > You can iterate elements of a container or indices of a container. It is > not same. Surely it is not the same. But why do we need the first? An array is surely a container, and we got along just fine for 30 years without being able to iterate elements of arrays. There is absolutely no difference for any other sort of container (especially as the array syntax can be used for any container). Iterating on elements of a container is unnecessary overkill. (It's also harmless overkill, unlike, say, anonymous access types). >> Especially as the >> indexing form works on all of the language-defined containers (you never >> need to explicitly call Reference or Element). So an "in" iterator looks >> just like the array iteration that we've been using from the beginning of >> time. What's so hard about that? > > There could be cases when a container does not have any natural index. > E.g. > a bag, a set, a files directory etc. You could iterate elements of without > inventing indices. Especially when the index is volatile. Consider an > implementation that gets a result set of a DB query and then iterates the > result. There is always *something* that works as an index. If there isn't, you can't iterate (because you can't figure out a reproducible order for which item is next). In any case, Ada does not support iteration without something being a cursor; the "of" form of iteration is a direct translation of the "in" form of iteration (it's purely syntactic with no semantics of its own). Randy.