From: Mats Weber <Mats.Weber@elca-matrix.ch>
To: Matthew Heaney <mheaney@ni.net>
Subject: Re: Syntax for tagged record types and class types
Date: 1997/05/22
Date: 1997-05-22T00:00:00+00:00 [thread overview]
Message-ID: <338427F3.C08@elca-matrix.ch> (raw)
In-Reply-To: mheaney-ya023680002105972330150001@news.ni.net
Matthew Heaney wrote:
> >package type Stack is
>
> That's a much more ambitious language change than I am suggesting. A
I am not so sure. Package type is just an example of what the syntax
could be (see my previous post). I have no problem calling them records.
> package is a module, not a type, and it's simply the mechanism by which one
> controls namespace. Modules and types are orthogonal language constructs
> in Ada, and like it or not, we should keep it that way.
OK. Make them records. I don't care, because I see
package type Stack is
procedure Push (X : in Item);
function Top return Item;
private
...
end Stack;
as equivalent to
type Stack is
record
procedure Push (X : in Item);
function Top return Item;
private
...
end record;
If you don't like the idea of package types, think of them as records in
which you can declare subprograms and that can have a private part.
BTW, the syntax for task types could be
type T is
task
entry E;
end task;
which would be more uniform with other type declarations in Ada.
> >All three approaches are essentially equivalent. I chose package types
> >because packages already have a private part, which is very useful, and
> >because I make some further use of the task-package similarity that is
> >very useful for expressing abstract data types that are needed in both
> >concurrent and non-concurrent variants (e.g. Booch components).
>
> Adding selectors and constructors to the language is far simpler, and a
> much better fit to what is already there. The syntax for both can look
> like functions:
Really ? You need two new keywords, I need zero :-) Seriously, I think
constructors and selectors are easily modelled as procedures and
functions, so I don't think it's worth adding new concepts here.
> type Stack is private;
>
> selector Top (S : Stack) return Item;
> or
> selector Stack.Top return Item;
>
> constructor Stack (Items : Item_Array);
> or
> constructor Initialize (Items : Item_Array) return Stack;
>
> So that I can do this:
>
> The_Stack : Stack'(1, 2, 3, 4, 5);
More probably The_Stack : Stack'((1, 2, 3, 4, 5)); (one set of
parentheses for the qualified expression, and one for the array
aggregate).
> constructor Initialize (X : Integer; Y : Float) return T;
>
> So that I could
>
> O : T (X => 5, Y => 3.14);
> O : T'(5, 3.14); -- do we need the tick?
You do need the tick because otherwise it's the syntax for discriminants
instead of constructor parameters (Ada is like that).
next prev parent reply other threads:[~1997-05-22 0:00 UTC|newest]
Thread overview: 120+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-04-23 0:00 Not intended for use in medical, Robert C. Leif, Ph.D.
1997-04-24 0:00 ` J. Florio
1997-04-25 0:00 ` Ken Garlington
1997-04-25 0:00 ` Kevin Cline
1997-04-25 0:00 ` Robert Dewar
1997-04-28 0:00 ` John Apa
1997-04-28 0:00 ` John M. Mills
1997-04-30 0:00 ` Larry Kilgallen
1997-05-02 0:00 ` Nick Roberts
1997-04-28 0:00 ` Robert Dewar
1997-04-29 0:00 ` Kaz Kylheku
1997-04-30 0:00 ` John Apa
[not found] ` <3367CE1E.5ED1@die_spammer.dasd.honeywell.com>
1997-05-01 0:00 ` Kaz Kylheku
1997-05-03 0:00 ` Simon Wright
1997-05-04 0:00 ` Kaz Kylheku
1997-05-04 0:00 ` Robert Dewar
1997-05-04 0:00 ` Richard Kenner
1997-05-05 0:00 ` Kaz Kylheku
1997-05-06 0:00 ` Kaz Kylheku
1997-05-06 0:00 ` Robert A Duff
1997-05-07 0:00 ` Kaz Kylheku
1997-05-08 0:00 ` Robert A Duff
1997-05-07 0:00 ` Robert Dewar
1997-05-08 0:00 ` John G. Volan
1997-05-10 0:00 ` Robert Dewar
1997-05-10 0:00 ` John G. Volan
1997-05-11 0:00 ` Robert Dewar
1997-05-11 0:00 ` John G. Volan
1997-05-11 0:00 ` Robert A Duff
1997-05-12 0:00 ` John G. Volan
1997-05-12 0:00 ` Robert Dewar
1997-05-11 0:00 ` John G. Volan
1997-05-11 0:00 ` Robert Dewar
1997-05-12 0:00 ` John G. Volan
1997-05-12 0:00 ` Robert Dewar
1997-05-17 0:00 ` Robert I. Eachus
[not found] ` <dewar.863877808@merv>
1997-05-17 0:00 ` Robert Dewar
1997-05-17 0:00 ` Jon S Anthony
1997-05-21 0:00 ` Syntax for tagged record types (was Re: Not intended for use in medical,) Ben Brosgol
1997-05-20 0:00 ` Matthew Heaney
1997-05-21 0:00 ` Syntax for tagged record types and class types Mats Weber
1997-05-21 0:00 ` Matthew Heaney
1997-05-22 0:00 ` Mats Weber [this message]
1997-05-27 0:00 ` Tucker Taft
1997-05-30 0:00 ` Mats.Weber
1997-05-22 0:00 ` Samuel A. Mize
1997-05-22 0:00 ` Samuel A. Mize
1997-05-23 0:00 ` Mats Weber
1997-05-21 0:00 ` Syntax for tagged record types (was Re: Not intended for use in medical,) Jon S Anthony
1997-05-21 0:00 ` Matthew Heaney
1997-05-22 0:00 ` Robert I. Eachus
1997-05-25 0:00 ` Matthew Heaney
1997-05-28 0:00 ` Robert I. Eachus
1997-05-23 0:00 ` Jon S Anthony
1997-05-23 0:00 ` Simon Wright
1997-05-23 0:00 ` Matthew Heaney
1997-05-25 0:00 ` Jon S Anthony
1997-05-28 0:00 ` Syntax for tagged record types (was Re David Kristola
[not found] ` <mheaney-ya023680002005972314260001@news.ni.net <mheaney-ya023680002105972302430001@news.ni.net>
1997-05-22 0:00 ` Syntax for tagged record types (was Re: Not intended for use in medical,) Robert A Duff
1997-05-22 0:00 ` John G. Volan
1997-05-23 0:00 ` Matthew Heaney
1997-05-23 0:00 ` Jon S Anthony
1997-05-23 0:00 ` John G. Volan
1997-05-24 0:00 ` Robert A Duff
1997-05-24 0:00 ` Matthew Heaney
1997-05-28 0:00 ` Robert I. Eachus
1997-05-25 0:00 ` Jon S Anthony
1997-05-23 0:00 ` Matthew Heaney
1997-05-25 0:00 ` Jon S Anthony
1997-05-25 0:00 ` Robert Dewar
1997-05-27 0:00 ` Ray Blaak
1997-05-23 0:00 ` Jon S Anthony
1997-05-12 0:00 ` Not intended for use in medical, John G. Volan
1997-05-12 0:00 ` Language Design Mistakes (was "not intended...") W. Wesley Groleau (Wes)
1997-05-13 0:00 ` Robert Dewar
1997-05-13 0:00 ` Robert A Duff
1997-05-14 0:00 ` Robert Dewar
1997-05-13 0:00 ` W. Wesley Groleau (Wes)
1997-05-08 0:00 ` Not intended for use in medical, Kaz Kylheku
1997-05-08 0:00 ` Robert Dewar
1997-05-09 0:00 ` Kaz Kylheku
1997-05-12 0:00 ` W. Wesley Groleau (Wes)
1997-05-12 0:00 ` John G. Volan
1997-05-14 0:00 ` Nick Roberts
1997-05-14 0:00 ` Robert Dewar
1997-05-14 0:00 ` Jeff Carter
[not found] ` <dewar.863632434@merv>
1997-05-15 0:00 ` Kaz Kylheku
1997-05-18 0:00 ` Robert Dewar
1997-05-15 0:00 ` Kaz Kylheku
1997-05-08 0:00 ` Robert A Duff
1997-05-09 0:00 ` Robert I. Eachus
1997-05-11 0:00 ` Robert Dewar
1997-05-11 0:00 ` Matthew Heaney
1997-05-12 0:00 ` Robert Dewar
1997-05-12 0:00 ` Matthew Heaney
1997-05-13 0:00 ` Jon S Anthony
1997-05-13 0:00 ` Matthew Heaney
1997-05-14 0:00 ` Robert Dewar
1997-05-14 0:00 ` Robert Dewar
1997-05-14 0:00 ` Robert Dewar
1997-05-15 0:00 ` W. Wesley Groleau (Wes)
1997-05-14 0:00 ` Nick Roberts
1997-05-14 0:00 ` Robert Dewar
1997-05-12 0:00 ` Robert I. Eachus
1997-05-13 0:00 ` Robert Dewar
1997-05-14 0:00 ` Nick Roberts
1997-05-14 0:00 ` Robert Dewar
[not found] ` <01bc6182$30e3a7c0$LocalHost@xhv46.dial.pipex.com>
1997-05-16 0:00 ` Robert Dewar
1997-05-16 0:00 ` Robert A Duff
1997-05-16 0:00 ` Robert I. Eachus
1997-05-18 0:00 ` Nick Roberts
1997-05-18 0:00 ` Matthew Heaney
1997-05-19 0:00 ` Robert A Duff
1997-05-19 0:00 ` Robert I. Eachus
1997-05-19 0:00 ` Matthew Heaney
1997-05-20 0:00 ` Nick Roberts
1997-05-20 0:00 ` Matthew Heaney
1997-05-21 0:00 ` Dale Stanbrough
1997-05-04 0:00 ` Richard Kenner
1997-05-04 0:00 ` Robert Dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox