comp.lang.ada
 help / color / mirror / Atom feed
From: mark_lundquist@my-deja.com
Subject: Re: Subprogram types vs. "limited access" (was Re: Do we need "Mission-Critical" software? Was: What to Do?
Date: Mon, 15 Jan 2001 21:06:02 GMT
Date: 2001-01-15T21:06:02+00:00	[thread overview]
Message-ID: <93vonj$3td$1@nnrp1.deja.com> (raw)
In-Reply-To: 93q393$opo$1@nnrp1.deja.com

In article <93q393$opo$1@nnrp1.deja.com>,
  dmitry6243@my-deja.com wrote:
> In article <93npfn$13d$1@nnrp1.deja.com>,
>   mark_lundquist@my-deja.com wrote:
> > In article <93mqhh$4gl$1@nnrp1.deja.com>,
> >   dmitry6243@my-deja.com wrote:
> > > In article <93l6ut$pvf$1@nnrp1.deja.com>,
> > >   mark_lundquist@my-deja.com wrote:
> >
> > > BTW (if Robert does not hear us (:-)) I think that Ada
> > > shuld have true subroutine types (not only pointers).  The values
> > > are passed by reference (always IN),
> > > so in may cases the clusy trick
> > > with generics will be not required.
> >
> > The downward closure thing again, huh?
> >
> > You have to define this idea of a procedure type to be limited
(like a
> > task) in order to really solve the problem, right?  Note that that
> > makes anything but an IN parameter illegal, so you also solve that
> > problem without having to create essentially a new kind of parameter
> > (as access parameters were).
> >
> > The first problem with subprogram parameters is a syntactic one --
> > what syntax do you use to establish its profile?  Subprogram types
as
> > you suggest are one way to solve that problem, and they seem
> > consistent with the "Ada way" (every parameter is of a named
subtype).
> >
> > e.g.,
> >
> >     type Action is procedure (This : in Something);
> >     type Predicate is function (This : in Something) return Boolean;
> >
> > Is that the idea?
>
> Yep
>
> > The conformance rules for parameters of these types would then have
to
> > be more like the matching rules for generic formal subprograms, or
> > subprogram renamings.  That is, you don't declare a function to be
of
> > type Predicate (per the example),
>
> Well, something like
>
>    Foo : constant Action :=
>       declare
>          ...
>       begin
>          ...
>       end Action; -- or end Foo; ?
>
> looks a bit indigestibe.

A lot indigestible.

> Something in the package instantiation / type
> extension style:
>
>    procedure Foo is new Action with
>       ...
>    begin
>       ...
>    end Foo;
>
> seems also clumsy.

No, what I had in mind was a contract model with matching rules, e.g.

   procedure Foo (X: Something);

would match a formal of type Action in the example.

>
> > you declare a function in the normal way and then it matches a
> > subprogram of type Predicate.  Right?
> >
> > That _is_ a bit of a stretch to the philosophy of the type system.
> > The essential idea of a type is that it's a template for the
creation
> > of objects.  Every type in Ada is an object type; this breaks that
> > regularity.  This would be a type that not only doesn't have objects
> > as its instances, it doesn't have instances at all!  It's just a
> > vehicle for carrying around a profile.  So from that perspective
it's
> > a little bizarre.
>
> Such kind of argumentation seems to be valid against T'Class too.

Kind of, but not really :-).  Objects of T'Class really are _objects_,
even if you can't declare an object to be of type T'Class.  Classwide
types are formally defined to be indefinite, as are unconstrained
types.  So you can't declare an object of type T'Class, for the same
reason that you cannot declare an object of type String.  That doesn't
make String any less of a real object type.

Ada95 defined a new kind of access type, the access-to-subprogram
type.  It's a real object type with real object values, even if the
value is a pointer that denotes something other than an object.  You
propose an altogether new kind of type that is unprecendented in that
it does not describe objects, but subprograms.  It is so unrelated to
the concept of an object type that it doesn't seem legitimate to even
call it a type, except to make the nice syntax for declaring subprogram
parameters!  The tail wagging the dog, in other words.

The concepts of type and object are inseparable.  To have subprogram
types make sense, as a starting point you would have to make
subprograms be first-class objects (not just a new kind of parameter),
and that would be a much different language than Ada.

I guess you could make the same argument for the concept of "pointer",
but I think empirically Ada95 shows that there's enough wiggle-room in
the idea of "pointer" to accommodate access-to-subpgrogram types.

>
> > Another idea that went around, I think during the Ada9x process, was
> > that of a "limited access" type.  This is a real object type, so
it's
> > more consistent with the rest of the Ada type system.  Limitedness
> > solves the accessibility problem for downward closures.
>
> The idea is interesting but, IMO, it is generally inconsistent to have
> pointers and have no types they point to.

Well, access-to-subprogram is here to stay in Ada, whether you like it
theoretically or not :-) :-) :-).  "limited access", at least, would be
a mild extension of what we already have in Ada95.  I'm suprised you
object to "pointer denoting something other than an object" (which, I
repeat, we already have) more than you object to "type describing
something other than an object".  And access-to-subprogram types are
useful for more than just passing as parameters (precisely because they
are real object types).

In terms of the machine model, pointer to a subprogram makes sense even
if subprograms are not objects (and hence not instances of a type).
Subprograms have an address -- or a descriptor, or something that can
be used as an aliasing reference.  If they don't, then they certainly
cannot be passed as a closure!  (For instance, you couldn't pass an
inline subprogram or an intrinsic subprogram as a closure).

Cheers,
Mark


Sent via Deja.com
http://www.deja.com/



  reply	other threads:[~2001-01-15 21:06 UTC|newest]

Thread overview: 184+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-12-31 16:09 What to Do? Petra Lynn Hofman
2000-12-31 16:58 ` Robert Dewar
2000-12-31 17:41   ` Ted Dennison
2001-01-01 15:24     ` Marin David Condic
2001-01-01 17:18       ` Robert Dewar
2001-01-02 15:05         ` Marin David Condic
2001-01-01 17:54       ` Ted Dennison
2001-01-02 15:14         ` Marin David Condic
2001-01-01 21:22       ` Lao Xiao Hai
2001-01-01 15:15   ` Marin David Condic
2000-12-31 18:06 ` E. Robert Tisdale
2000-12-31 21:07   ` tmoran
2001-01-01 16:10   ` Marin David Condic
2001-01-01 17:08     ` Ehud Lamm
2001-01-01 17:53       ` Do we need "Mission-Critical" software? Was: " Warren W. Gay VE3WWG
2001-01-01 18:29         ` Ted Dennison
2001-01-01 20:25           ` Robert Dewar
2001-01-02 19:03             ` Ted Dennison
2001-01-02 20:22               ` Robert Dewar
2001-01-02 22:23               ` Florian Weimer
2001-01-02 22:27               ` Florian Weimer
2001-01-01 20:26           ` Robert Dewar
2001-01-02 19:05             ` Ted Dennison
2001-01-02 20:24               ` Robert Dewar
2001-01-02 22:53                 ` Ted Dennison
2001-01-03 18:39           ` Georg Bauhaus
2001-01-03 19:22             ` Ted Dennison
2001-01-04  1:18               ` Cesar Scarpini Rabak
2001-01-01 19:28         ` Ehud Lamm
2001-01-02 14:56         ` Cesar Scarpini Rabak
2001-01-03  3:32           ` Warren W. Gay VE3WWG
2001-01-04  1:02             ` Cesar Scarpini Rabak
2001-01-04  3:53               ` Warren W. Gay VE3WWG
2001-01-04 12:04               ` Marin David Condic
2001-01-04 13:48                 ` Marc A. Criley
2001-01-06 20:23                   ` Lao Xiao Hai
2001-01-04 17:09                 ` Ted Dennison
2001-01-04 20:30                   ` Kevin Rigotti
2001-01-05  9:15                     ` n_brunot
2001-01-05  9:57                       ` Tarjei T. Jensen
2001-01-05 10:41                         ` n_brunot
2001-01-05 13:41                       ` Robert Dewar
2001-01-05 14:15                         ` n_brunot
2001-01-06 17:17                           ` Robert Dewar
2001-01-08  8:51                             ` n_brunot
2001-01-09  4:00                               ` Robert Dewar
2001-01-09 10:20                                 ` n_brunot
2001-01-09 12:34                                   ` Karel Thoenissen
2001-01-09 14:18                                   ` Robert Dewar
2001-01-09 15:29                                     ` Ole-Hjalmar Kristensen
2001-01-09 19:25                                     ` tmoran
2001-01-09 20:11                                     ` Florian Weimer
2001-01-09 14:20                                   ` Robert Dewar
2001-01-10  2:08                                 ` Keith Thompson
     [not found]                               ` <93e2d1$spv$1@ <3A5B054B.3CF03325@hello.nl>
2001-01-09 22:05                                 ` Simon Wright
2001-01-05 15:35                         ` Ole-Hjalmar Kristensen
2001-01-05 19:20                           ` Object naming conventions (was: Do we need "Mission-Critical" software?) Kevin Rigotti
2001-01-06 17:30                             ` Robert Dewar
2001-01-06 17:24                           ` Do we need "Mission-Critical" software? Was: What to Do? Robert Dewar
2001-01-08  9:14                             ` n_brunot
2001-01-09  0:28                               ` Cesar Scarpini Rabak
2001-01-09  8:35                                 ` Florian Weimer
2001-01-10  2:21                                 ` mark_lundquist
2001-01-09  2:34                               ` DuckE
2001-01-09  4:12                               ` Robert Dewar
2001-01-09  9:12                                 ` n_brunot
2001-01-09 12:24                                   ` David Gillon
2001-01-09 12:58                                   ` Marc A. Criley
2001-01-09 13:42                                   ` Marin David Condic
2001-01-09 14:00                                     ` Marin David Condic
2001-01-12  0:21                                       ` Larry J. Elmore
2001-01-12  1:24                                         ` Al Christians
2001-01-12  5:19                                         ` Ken Garlington
2001-01-12 18:05                                         ` Marin David Condic
2001-01-09 14:27                                   ` Robert Dewar
2001-01-09 15:15                                     ` n_brunot
2001-01-09 19:41                                       ` Robert Dewar
2001-01-09 20:44                                         ` Florian Weimer
2001-01-10 12:22                                           ` Marin David Condic
2001-01-10 13:49                                             ` Ken Garlington
2001-01-10 20:41                                           ` Robert Dewar
2001-01-09 23:04                                         ` tmoran
2001-01-27 16:58                                           ` Alejandro R. Mosteo
2001-01-10 16:37                                         ` Jerry Petrey
2001-01-10 19:12                                           ` Georg Bauhaus
2001-01-11  1:43                                           ` Frank Manning
2001-01-09 16:12                                     ` n_brunot
2001-01-09 19:48                                       ` Robert Dewar
2001-01-09 20:43                                         ` Britt Snodgrass
2001-01-10 20:43                                           ` Robert Dewar
2001-01-11 13:41                                             ` JOVIAL (was Do we need "Mission-Critical" software?) Ken Garlington
2001-01-12 15:32                                               ` carr_tom
2001-01-12 16:58                                                 ` Ira D. Baxter
2001-01-22 23:18                                                 ` jls
2001-01-13 14:20                                               ` Ken Garlington
2001-01-10 10:41                                         ` Do we need "Mission-Critical" software? Was: What to Do? David Kristola
2001-01-10 13:44                                           ` Ken Garlington
2001-01-10 21:39                                           ` Robert Dewar
2001-01-10 11:47                                         ` n_brunot
2001-01-10 12:25                                           ` Marin David Condic
2001-01-10 21:36                                           ` Robert Dewar
2001-01-11 10:00                                             ` n_brunot
2001-01-12  0:42                                               ` Larry J. Elmore
2001-01-12  1:47                                                 ` Robert Dewar
2001-01-12 16:05                                               ` Georg Bauhaus
2001-01-16 19:52                                               ` Do we need any Dewar-bashing? Wes Groleau
2001-01-09 19:03                                     ` Do we need "Mission-Critical" software? Was: What to Do? dmitry6243
2001-01-09 19:51                                       ` Robert Dewar
2001-01-09 20:46                                         ` Florian Weimer
2001-01-09 21:57                                         ` Warren W. Gay VE3WWG
2001-01-10  8:55                                         ` dmitry6243
2001-01-10 13:39                                           ` Pascal Obry
2001-01-11  8:58                                             ` dmitry6243
2001-01-11 21:01                                       ` mark_lundquist
2001-01-12 11:41                                         ` dmitry6243
2001-01-12 20:29                                           ` Subprogram types vs. "limited access" (was " mark_lundquist
2001-01-12 21:58                                             ` Randy Brukardt
2001-01-13  1:35                                               ` Robert Dewar
2001-01-13  1:20                                             ` Robert Dewar
2001-01-13 17:29                                             ` dmitry6243
2001-01-15 21:06                                               ` mark_lundquist [this message]
2001-01-16  0:32                                                 ` Robert Dewar
2001-01-16  2:57                                                   ` mark_lundquist
2001-01-16  5:47                                                     ` Robert Dewar
2001-01-16 17:47                                                       ` mark_lundquist
2001-01-16  9:12                                                 ` dmitry6243
2001-01-16 20:04                                         ` Wes Groleau
2001-02-02  6:45                                           ` Java packages (was " mark_lundquist
2001-01-15 20:04                                   ` Lao Xiao Hai
2001-01-15 20:28                                     ` Jerry Petrey
2001-01-15 21:05                                       ` tmoran
2001-01-16  0:36                                         ` Robert Dewar
2001-01-16 13:23                                           ` Marin David Condic
2001-01-15 21:44                                     ` Tucker Taft
2001-01-15 22:26                                       ` BSCrawford
2001-01-23  2:19                                       ` Lao Xiao Hai
     [not found]                                         ` <94kkme$amg$1@nnrp1.deja.com>
2001-01-26 20:43                                           ` Lao Xiao Hai
2001-01-27  9:36                                             ` David Kristola
2001-01-27 21:54                                             ` Ken Garlington
2001-01-27 23:09                                               ` Pat Rogers
2001-01-28 22:30                                                 ` Ken Garlington
2001-01-09 13:37                                 ` Marin David Condic
2001-01-12  1:11                                   ` Larry J. Elmore
2001-01-09 14:52                               ` Larry Kilgallen
2001-01-10 10:26                                 ` Florian Weimer
2001-01-10 21:43                                   ` Robert Dewar
2001-01-11 18:51                               ` mark_lundquist
2001-01-11 20:11                     ` mark_lundquist
2001-01-12 11:49                       ` Kevin Rigotti
2001-01-12 19:19                         ` mark_lundquist
2001-01-16 20:20                           ` Wes Groleau
2001-01-04 16:48               ` Ted Dennison
2001-01-05 13:15                 ` Cesar Scarpini Rabak
2001-01-06 20:19               ` Lao Xiao Hai
2001-01-01 21:37       ` Lao Xiao Hai
2001-01-01 21:44         ` Ehud Lamm
2001-01-03  4:00         ` William Starner
2001-01-01 23:44       ` David Kristola
2001-01-02  0:41         ` Brian Rogoff
2001-01-02  3:14           ` tmoran
2001-01-02 20:35             ` David Kristola
2001-01-02 22:56               ` Ted Dennison
2001-01-02  7:38           ` Ehud Lamm
2001-01-02 15:08           ` Ted Dennison
2001-01-02 20:59           ` What to Do? Silly Valley JF Harrison
2001-01-02 23:22             ` William Dale
2001-01-06 20:45               ` Lao Xiao Hai
2001-01-08 18:15                 ` William Dale
2001-01-08 19:00                   ` Florian Weimer
2001-01-08 19:01                   ` Florian Weimer
2000-12-31 21:47 ` What to Do? Robert Love
2001-01-01 21:31   ` Robert Love
2001-01-10 22:06 ` km0762
2001-01-10 22:06 ` km0762
2001-01-11  0:00   ` James Rogers
2001-01-11  1:03     ` Al Christians
2001-01-29 16:09       ` spider_templar2
2001-01-11 13:57     ` John English
2001-01-11 18:00       ` William Dale
2001-01-12  0:27         ` John English
2001-01-12  2:57           ` David Botton
2001-01-13  3:34             ` Petra Lynn Hofman
2001-01-13  6:05               ` Robert Dewar
2001-01-13 13:52               ` Ken Garlington
replies disabled

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