comp.lang.ada
 help / color / mirror / Atom feed
From: dmitry6243@my-deja.com
Subject: Re: Constructors/Destructors in Ada95
Date: 2000/10/25
Date: 2000-10-25T00:00:00+00:00	[thread overview]
Message-ID: <8t6pi9$9s8$1@nnrp1.deja.com> (raw)
In-Reply-To: 39F6D201.73C006FA@acm.org

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 (:-))

> (Look at the semantics of C++
> construction/destruction sometime - especially as it applies to function parameters
> - and see what an abomination that can become! :-)

So let's show them how to do it right (:-))

--
Regards,
Dmitry Kazakov


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 ` Ted Dennison
2000-10-19  0:00 ` Marin David Condic
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 [this message]
2000-10-25  0:00               ` mark.biggar
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