comp.lang.ada
 help / color / mirror / Atom feed
From: "Heimlich Manure" <spam@goes.here>
Subject: Re: Why was it done this way ?
Date: Wed, 26 Oct 2005 22:39:29 -0400
Date: 2005-10-26T22:39:29-04:00	[thread overview]
Message-ID: <S4X7f.13444$rE2.2101@fe10.lga> (raw)
In-Reply-To: 1130380243.198117.318920@g14g2000cwa.googlegroups.com

Well, recursion would explain some but not all of it. Something like

task type T1;
task body T1 is
    MyGhost : T1;

is illegal. Meanwhile,

task type T1;
type T1_Ptr is access T1;
task body T1 is
    MyGhostPtr : T1_Ptr;

is legal. But initializing MyGhostPtr can't be done, obviously, because T1
is unmentionable within its own scope.

Or even worse :

task type T1;
type T1_Ghost is new T1;
task body T1 is
    MyGhostPtr : T1_Ghost;

Even this is legal !

So I humbly sense an inconsistency in "dynamicness" of tasks - it should
either allow full throttle recursion, or detect such loops at compile-time
and barf. But I beg to be forgiven, I just started looking at Ada a week
ago.



<jimmaureenrogers@worldnet.att.net> wrote in message
news:1130380243.198117.318920@g14g2000cwa.googlegroups.com...
>
> Heimlich Manure wrote:
> > Hello respectable group,
> >
> > This may be a silly question but I'm sure there was reasoning behind
> > allowing such :
> >
> > with Ada.Text_IO;
> > use Ada.Text_IO;
> >
> > procedure My_Example is
> >     task type T1;
> >     task type T2;
> >
> >     task body T1 is
> >     begin
> >         Put_Line("Instantiating T2 from T1");
> >         declare
> >             T_2_2 : T2;
> >         begin
> >             null;
> >         end;
> >         end T1;
> >
> >      task body T2 is
> >      begin
> >         Put_Line("Instantiating T1 from T2");
> >         declare
> >             T_1_1 : T1;
> >         begin
> >             null;
> >         end;
> >     end T2;
> >
> > T_1 : T2;
> > begin
> >     null;
> > end My_Example;
> >
> > Question is, why is this legit ?
>
> What do you think should be wrong with this?
>
> Think of instances of tasks as active objects.
> Each task creates an instance of the other task.
>
> Granted, this program will run forever until the
> stack exhausted. In that manner, this program is
> a little like a recursive algorithm with no
> terminating condition.
>
> Jim Rogers
>





  reply	other threads:[~2005-10-27  2:39 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-10-27  1:00 Why was it done this way ? Heimlich Manure
2005-10-27  2:30 ` jimmaureenrogers
2005-10-27  2:39   ` Heimlich Manure [this message]
2005-10-27  6:09     ` Jeffrey R. Carter
2005-10-27  6:46     ` Jean-Pierre Rosen
2005-10-27  2:46 ` Steve
2005-10-27  9:39 ` Georg Bauhaus
2005-10-27 15:07   ` Robert A Duff
replies disabled

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