comp.lang.ada
 help / color / mirror / Atom feed
From: mark.biggar@trustedsyslabs.com
Subject: Re: Constructors/Destructors in Ada95
Date: 2000/10/25
Date: 2000-10-25T00:00:00+00:00	[thread overview]
Message-ID: <8t6vhc$fmb$1@nnrp1.deja.com> (raw)
In-Reply-To: 8t6pi9$9s8$1@nnrp1.deja.com

In article <8t6pi9$9s8$1@nnrp1.deja.com>,
  dmitry6243@my-deja.com wrote:
> In article <39F6D201.73C006FA@acm.org>,
>   Marin David Condic <mcondic.nospam@acm.org> wrote:
> > Ray Blaak wrote:
> >
> > > I really would like to be able to do:
> > >
> > >   procedure ":="(target : in out T; source : in T);
> > >
> > > so as to have complete control over what is happening. I vaguely
recall some
> > > rationale from the Ada 9X discussions for why user-defined
assignment per se
> > > was not incorporated. Does anyone remember?
> >
> > Does a
> > statement like: "X < Y ;" make sense in Ada?) As a procedure, you'd
have to allow
> > procedures to have symbol names - which opens up a whole can of
worms. Further, it
> > would mean allowing "infix procedures" which is hard to make sense
of - or at least
> > could make programs look really strange.
>
> It would be nice (it is in my private Ada to-do list for a long time):
>
> function "*" (Left, Right : Matrix) return Matrix;  -- Produces a new
object
> procedure "*" (Left : in out Matrix; Right : Matrix);  -- Multiplies
Left to
> Right "in-place"
>
> So I would count it as an advantage. There is another. If you have
>
> procedure ":="(target : in out T; source : in T);
>
> then your assignment may take a look on the left-side object before
its
> destruction. Ada's Adjust is much more (IMO too much) specialized.
>
> > I'm sure there are dozens of other reasons why it was decided not to
provide a
> > means of letting the user define assignment. I'd think it would
require perverting,
> > warping and twisting language concepts too much.
>
> I think that the major reason was the decision to limit user defined
> assigments by Controlled types. Doing so you must drop ":=" form,
which
> ontherwise would permanently remind you that actually all types might
be
> assigned (:-))

One of the problems with this proposal (redefineing ":=") is that
you would have to define Initialize, Adjust and Finialize anyway
as you need them to implement value parameter passing, temporary
creation and function return values correctly.  Each of those is
like assingment, but not exactly the same being, built out of the
three primitives in different ways.  So it makes more sense to just
define the three primitives and have the compiler generate
standard usage sequences then to redefine ":=" and have strange
and hard to understand things happen.

There's a reason that C++ has several types of constructors and in
many ways the Ada mechanism is simpler.

--
Mark Biggar
mark.biggar@trustedsyslabs.com


Sent via Deja.com http://www.deja.com/
Before you buy.




  reply	other threads:[~2000-10-25  0:00 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-10-18  0:00 Constructors/Destructors in Ada95 Francois Godme
2000-10-19  0:00 ` Marin David Condic
2000-10-19  0:00 ` Ted Dennison
2000-10-19  0:00 ` tmoran
2000-10-19  0:00   ` Francois Godme
2000-10-19  0:00     ` Ted Dennison
2000-10-20  0:00     ` Tucker Taft
2000-10-20  0:00       ` Francois Godme
2000-10-21  0:00         ` Marin David Condic
2000-10-23  0:00       ` Francois Godme
2000-10-24  0:00         ` Ray Blaak
2000-10-25  0:00           ` Francois Godme
2000-10-25  0:00           ` Marin David Condic
2000-10-25  0:00             ` dmitry6243
2000-10-25  0:00               ` mark.biggar [this message]
2000-10-26 11:44                 ` dmitry6243
2000-10-26 13:25                   ` Robert A Duff
2000-10-27  8:10                     ` dmitry6243
2000-10-26 17:55                   ` tmoran
2000-10-27  8:10                     ` dmitry6243
2000-10-26 21:31                 ` Tucker Taft
2000-10-27  8:46                   ` dmitry6243
2000-10-25  0:00               ` Pascal Obry
2000-10-26  0:00                 ` dmitry6243
2000-10-27  7:12             ` Ray Blaak
2000-10-27 18:11           ` Francois Godme
2000-10-30 11:36             ` Robert A Duff
2000-10-30 22:03               ` dale
2000-10-22  0:00     ` rwilson007007
2000-10-22  0:00       ` Francois Godme
2000-10-24  0:00         ` rwilson007007
  -- strict thread matches above, loose matches on Subject: below --
2000-10-29 22:51 rwilson007007
2000-10-30  4:03 ` Ray Blaak
2000-10-30 12:13 ` Marin David Condic
2000-10-30 16:39   ` Randy Brukardt
replies disabled

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