From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Generators/coroutines in future Ada?
Date: Wed, 12 Jul 2017 09:34:02 +0200
Date: 2017-07-12T09:34:02+02:00 [thread overview]
Message-ID: <ok4jda$1dud$1@gioia.aioe.org> (raw)
In-Reply-To: ok4fne$j41$1@dont-email.me
On 12/07/2017 08:35, G.B. wrote:
> On 11.07.17 22:25, Dmitry A. Kazakov wrote:
>> On 2017-07-11 21:22, J-P. Rosen wrote:
>>> Le 11/07/2017 à 20:36, Victor Porton a écrit :
>>>> This state also includes the point of execution (like "We are in the
>>>> second
>>>> loop in its second operator.")
>>>>
>>>>> This can easily be achieved with a function within a package, where
>>>>> the
>>>>> package serves to protect and hide the function's state.
>>>> Ada currently has no support to save such (point of execution) states.
>>> It has. Make your generator a task, and have an accept when the data is
>>> ready, which can be nested as deep as you want in any construct.
>>>
>>> A task is a perfect abstraction for a thread of control that maintains
>>> its own execution state!
>>
>> Except that no control is required.
>>
>> I don't understand what is wrong with:
>>
>> type Stateful is limited private;
>> function Generate (X : not null access Stateful) return Things;
>
> Arguably, first, a "function" lacks query/command separation:
>
> type Stateful is limited interface;
> function Current (x : Stateful) return Thing; -- (*)
> procedure Next (x : in out Stateful);
I don't understand this example. Why Next cannot be a part of Current?
Example:
X := Stack.Pop;
> Not surprisingly, I think, Icon's generators are available to
> use in while-loops that look perfectly ordinary. If Ada requires
> generators to be more explicit:
>
> G : Stateful := Strings.Find
> (Subject => "...",
> Pattern => "___");
>
> while X of G with condition (X) loop -- not Ada
> ...
> end loop;
>
> "while ... of ... with" then requires G to be a Stateful.
> Presence of special syntax is, as previously, HOL.
I don't understand this example. If you mean multiple return values
(tuples), yes Ada should have them, but that is unrelated to stefulness.
--
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de
next prev parent reply other threads:[~2017-07-12 7:34 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-09 20:19 Generators/coroutines in future Ada? Victor Porton
2017-07-09 21:28 ` Dennis Lee Bieber
2017-07-09 23:56 ` Victor Porton
2017-07-10 7:33 ` Dmitry A. Kazakov
2017-07-10 13:38 ` Victor Porton
2017-07-10 17:01 ` Paul Rubin
2017-07-10 21:24 ` Victor Porton
2017-07-12 17:09 ` Paul Rubin
2017-07-12 17:39 ` Victor Porton
2017-07-13 6:35 ` Paul Rubin
2017-07-11 9:42 ` J-P. Rosen
2017-07-11 12:52 ` Victor Porton
2017-07-11 13:01 ` Victor Porton
2017-07-11 13:26 ` J-P. Rosen
2017-07-11 16:04 ` Dennis Lee Bieber
2017-07-11 16:59 ` Dmitry A. Kazakov
2017-07-11 19:52 ` Pascal Obry
2017-07-11 20:18 ` Dmitry A. Kazakov
2017-07-11 18:36 ` Victor Porton
2017-07-11 19:22 ` J-P. Rosen
2017-07-11 20:25 ` Dmitry A. Kazakov
2017-07-11 23:19 ` Victor Porton
2017-07-12 4:54 ` J-P. Rosen
2017-07-12 13:07 ` Victor Porton
2017-07-12 13:38 ` Dmitry A. Kazakov
2017-07-12 5:35 ` Randy Brukardt
2017-07-12 7:27 ` Dmitry A. Kazakov
2017-07-12 22:47 ` Shark8
2017-07-16 13:11 ` Robert Eachus
2017-07-17 23:54 ` Randy Brukardt
2017-07-18 7:38 ` Dmitry A. Kazakov
2017-07-12 7:19 ` Dmitry A. Kazakov
2017-07-12 6:35 ` G.B.
2017-07-12 7:34 ` Dmitry A. Kazakov [this message]
2017-07-12 20:49 ` G.B.
2017-07-13 8:18 ` Dmitry A. Kazakov
2017-07-12 17:34 ` Paul Rubin
2017-07-11 19:27 ` Simon Wright
2017-07-12 5:42 ` darkestkhan
2017-07-12 8:57 ` Maciej Sobczak
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox