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.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,effb80d4bb7716dd X-Google-Attributes: gid103376,public From: Stephen Leake Subject: Re: Wanted: Ada STL. Reward: Ada's Future Date: 1999/02/04 Message-ID: #1/1 X-Deja-AN: 440661803 References: <790f4q$3l@bgtnsc01.worldnet.att.net> <36B856E4.D921C1D@bton.ac.uk> Organization: NASA Goddard Space Flight Center -- Greenbelt, Maryland USA Newsgroups: comp.lang.ada Date: 1999-02-04T00:00:00+00:00 List-Id: Brian Rogoff writes: > On Wed, 3 Feb 1999, Matthew Heaney wrote: > > ... snip ... > > > > for Index in Map'Range loop > > > > > > > > end loop; > > > > If this looks simpler than my earlier formulation, that's because it's > > simpler. Loop iteration in Ada is less error prone than in C. > > > > This is yet another reason why I think that looking at the STL as a > > model for a standard Ada library is dangerous and misleading. > > Indeed. Just look at how incomprehensible AGL looping looks > > Os := Copy(Start(Deque'Access), Finish(Deque'Access), Os); > > or > > Pos := Find(Start(IVec'Access), Finish(IVec'Access), 42); > > The horror, the horror ... > > > The idioms in both languages are completely different. So forget about > > the STL as a model for an Ada library. > > If you do your homework, you'll find that completely independently of C++ > or the STL, Judy Bishop wrote a similar library for Ada 83 (trying to > mimic CLU iterators), and it turns out to look remarkably similar to STL or > AGL. See > > Bishop, J.M. et al. "The effect of data abstraction on loop > programming techniques" IEEE TRANSACTIONS ON SOFTWARE ENGINEERING > April 1990. vol.16, no.4, p. 389-402 (Journal Paper - English) > > (Note that some of Bishop's complaints about Ada no longer apply to Ada 95) > > So far, you've said nothing that indicates that you've looked seriously at > the STL. Why don't you just get very specific and say exactly why you > think it is a bad model for an Ada library, using examples? I think the > idea of writing algorithms over collections in terms of their iterators is > a good one. I thought Matthew just did that, but you haven't answered the question "why does the STL allow iteration past the end of the array". This bugs me too. Is there a real reason here, or is it an accident of the implementation? Perhaps it is the most general way to define an iterator that points to nothing? Certainly if the underlying implementation of a collection is an array, this makes sense. But if the underlying implementation is a list, then a null pointer makes more sense. Why not make the abstraction resemble a null pointer, rather than an out-of-bounds index? -- Stephe