From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: A few questions
Date: Sat, 14 Nov 2015 12:42:28 +0100
Date: 2015-11-14T12:42:28+01:00 [thread overview]
Message-ID: <14s9163zfvsqb$.2t21ye88a2t5$.dlg@40tude.net> (raw)
In-Reply-To: n25nd6$oc0$1@loke.gir.dk
On Fri, 13 Nov 2015 16:15:01 -0600, Randy Brukardt wrote:
> "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message
> news:1705bpj6jrld0.1lc44o5yo6bj7$.dlg@40tude.net...
>> On Fri, 13 Nov 2015 11:52:29 -0600, Randy Brukardt wrote:
> ...
>>> And if you did that, there is
>>> no problem implementing this in the existing Ada, even as you suggest.
>>
>> I am not sure about that.
>
> I am. :-)
>
> You'd probably keep some state in the iterator object (some access to the
> file, at a minimum, possibly a buffer). The "cursor" would be the character.
> Each call to Next would put the following character into the "cursor".
> Easy-peasy. :-)
It would be nice to see a demonstration for iterating lines of a text
file... (:-))
>>>>> An array is surely
>>>>> a container, and we got along just fine for 30 years without being able
>>>>> to iterate elements of arrays.
>>>>
>>>> Not every container is an array. There are lots of containers which
>>>> semantically have no index.
>>>
>>> Then provide an iterator implementation where the cursor is an access to
>>> the element.
>>
>> Why do I need extra data types, bad types as they involve pointers?
>
> An iterator is an extra data type. And you surely don't need to involve
> pointers, if copying the element is OK.
And a pointer to the container.
>>> That's the Bag arrgument again. I think that particular data structure is a
>>> fraud, because it cannot be created in practice -- plus you have to have
>>> some sort of access to the elements, so you end up with a cursor of some
>>> sort anyway.
>>
>> No way. The bag is a set that only supports insertion and iteration.
>> Nothing more. It is very useful, e.g. to hold strong references to
>> allocated data. References are thrown into a bag. At some point the bag is
>> iterated and all references invalidated releasing resources.
>
> Your description points out the problem: it's "a set", at which point a set
> implementation is appropriate. And the implementation is identical to any
> other set, so there is almost no value to having a separate bag
> implementation (it provides no performance improvements over an ordered set,
> for instance).
A bag need not to be sorted, no overhead to keep the order, no need for
elements to have "=" and "<".
> Whether its useful or not is irrelevant -- it is indistiguishable from any
> other set (the extra operations having no effect or overhead if not used).
It is. The implementation will likely choose a singly linked list of
element buckets.
> So there is no real value to having a separate Bag abstraction.
Even if the implementation were same, abstraction is called abstraction
because it is not implementation.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2015-11-14 11:42 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-31 20:29 A few questions Laurent
2015-10-31 20:49 ` Dmitry A. Kazakov
2015-11-01 13:16 ` Laurent
2015-11-01 0:25 ` Jeffrey R. Carter
2015-11-01 13:30 ` Laurent
2015-11-03 6:25 ` Randy Brukardt
2015-11-01 9:05 ` Jacob Sparre Andersen
2015-11-01 13:40 ` Laurent
2015-11-01 18:14 ` Jacob Sparre Andersen
2015-11-01 18:40 ` Laurent
2015-11-01 13:42 ` brbarkstrom
2015-11-01 13:52 ` Laurent
2015-11-01 17:59 ` Jeffrey R. Carter
2015-11-01 18:35 ` Laurent
2015-11-02 13:25 ` brbarkstrom
2015-11-01 15:15 ` Dennis Lee Bieber
2015-11-01 16:33 ` gautier_niouzes
2015-11-01 16:36 ` gautier_niouzes
2015-11-01 18:17 ` Stephen Leake
2015-11-01 18:53 ` Laurent
2015-11-02 0:41 ` Dennis Lee Bieber
2015-11-02 16:42 ` Stephen Leake
2015-11-02 17:45 ` Simon Wright
2015-11-02 18:48 ` Simon Wright
2015-11-03 6:33 ` Randy Brukardt
2015-11-03 8:26 ` Simon Wright
2015-11-03 6:40 ` Randy Brukardt
2015-11-03 8:34 ` Simon Wright
2015-11-04 16:19 ` Simon Wright
2015-11-05 1:20 ` Randy Brukardt
2015-11-05 8:34 ` briot.emmanuel
2015-11-12 18:28 ` Randy Brukardt
2015-11-12 20:19 ` Simon Wright
2015-11-12 20:56 ` Dmitry A. Kazakov
2015-11-12 21:15 ` Randy Brukardt
2015-11-13 8:40 ` Dmitry A. Kazakov
2015-11-13 17:52 ` Randy Brukardt
2015-11-13 20:37 ` Dmitry A. Kazakov
2015-11-13 22:15 ` Randy Brukardt
2015-11-14 11:42 ` Dmitry A. Kazakov [this message]
2015-11-14 12:37 ` Simon Wright
2015-11-14 17:24 ` Shark8
2015-11-14 20:09 ` Simon Wright
2015-11-15 18:54 ` Brad Moore
2015-11-13 8:45 ` briot.emmanuel
2015-11-13 17:41 ` Randy Brukardt
2015-11-14 19:57 ` briot.emmanuel
2015-11-16 19:13 ` Randy Brukardt
2015-11-16 20:47 ` Dmitry A. Kazakov
2015-11-17 21:30 ` Randy Brukardt
2015-11-18 9:53 ` Dmitry A. Kazakov
2015-11-18 22:27 ` Randy Brukardt
2015-11-19 8:52 ` Dmitry A. Kazakov
2015-11-19 21:15 ` Randy Brukardt
2015-11-16 21:50 ` Simon Wright
2015-11-17 21:33 ` Randy Brukardt
2015-11-17 23:14 ` Simon Wright
2015-11-17 8:49 ` briot.emmanuel
2015-11-17 22:09 ` Randy Brukardt
2015-11-05 8:45 ` Simon Wright
2015-11-05 8:52 ` Simon Wright
2015-11-12 18:29 ` Randy Brukardt
2015-11-12 18:32 ` Randy Brukardt
2015-11-12 20:02 ` Simon Wright
2015-11-12 21:08 ` Randy Brukardt
2015-11-15 17:56 ` Brad Moore
2015-11-15 21:42 ` Simon Wright
2015-11-16 19:16 ` Randy Brukardt
-- strict thread matches above, loose matches on Subject: below --
2015-02-07 17:43 Laurent
2015-02-07 22:15 ` Brad Moore
2015-02-08 22:37 ` Laurent
2015-02-09 13:56 ` Brad Moore
2015-02-09 18:36 ` Laurent
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox