comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Pop function
Date: Fri, 16 Dec 2011 09:23:30 +0100
Date: 2011-12-16T09:23:30+01:00	[thread overview]
Message-ID: <16dpw88jruv36.woma9en920t8$.dlg@40tude.net> (raw)
In-Reply-To: m2ehw58s6m.fsf@pushface.org

On Thu, 15 Dec 2011 21:02:09 +0000, Simon Wright wrote:

> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> writes:
> 
>> On Thu, 15 Dec 2011 12:57:47 -0700, Jeffrey Carter wrote:
>>
>>> On 12/15/2011 01:38 AM, Dmitry A. Kazakov wrote:
>>>> On Wed, 14 Dec 2011 17:34:57 -0700, Jeffrey Carter wrote:
>>>>
>>>>> Your public interface should never use access types.
>>>>
>>>> Yes, but since list as a data structure has the semantics of objects
>>>> accessed by references it would make sense to have this reflected in the
>>>> interface. But of course the list element must be
>>>>
>>>>     type List_Item is access Integer; -- Only the data, no other mess
>>> 
>>> No, a public interface should never use access types, ever. Hiding
>>> those is what abstraction is about. Any public interface that uses
>>> access types is poorly designed.
>>
>> In that case there should be no linked lists at all. A linked list is per
>> its definition a set of elements accessed using pointers.
> 
> I don't think that using the word "linked" in the name is the same as
> "using access types in the abstraction"!

Not exactly same, right, but still it assumes referential semantics of the
list elements. Access type is one possible implementation of.

> I've seen linked lists that were implemented (under the hood) with
> indices into an array of items.

In that case the index must be exposed in the interface, or a private type
encapsulating that index.

The bottom line, you need some referential object to refer the list element
in the interface. You cannot have linked lists defined solely in the terms
of element values. List elements have an identity.

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de



  parent reply	other threads:[~2011-12-16  8:23 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-15  0:06 Pop function Rego, P.
2011-12-15  0:29 ` Martin Dowie
2011-12-15  1:23   ` Rego, P.
2011-12-15  2:08   ` Adam Beneschan
2011-12-15 22:59     ` Martin Dowie
2011-12-16 10:27       ` georg bauhaus
2011-12-15  0:34 ` Jeffrey Carter
2011-12-15  1:35   ` Rego, P.
2011-12-15  2:55     ` Alex Mentis
2011-12-15  3:00       ` Alex Mentis
2011-12-15  3:00     ` Jeffrey Carter
2011-12-15  3:41       ` Rego, P.
2011-12-15  8:38   ` Dmitry A. Kazakov
2011-12-15 19:57     ` Jeffrey Carter
2011-12-15 20:15       ` Dmitry A. Kazakov
2011-12-15 21:02         ` Simon Wright
2011-12-15 21:25           ` Jeffrey Carter
2011-12-16  8:23           ` Dmitry A. Kazakov [this message]
2011-12-16  0:31       ` Randy Brukardt
2011-12-15  2:06 ` Adam Beneschan
2011-12-15  3:27   ` Rego, P.
2011-12-15 12:43     ` Simon Wright
2011-12-15 15:54       ` Adam Beneschan
2011-12-15 18:34         ` Simon Wright
2011-12-15 19:14           ` Dmitry A. Kazakov
2011-12-15 16:14     ` Adam Beneschan
2011-12-28 13:04       ` Rego, P.
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox