comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: proposal for new assignment operators
Date: Wed, 25 Jun 2003 12:28:22 +0200
Date: 2003-06-25T12:28:22+02:00	[thread overview]
Message-ID: <bdbtav$regf8$1@ID-77047.news.dfncis.de> (raw)
In-Reply-To: bebbba07.0306242223.1f86b3f7@posting.google.com

Russ wrote:

> As most of you are aware, several very popular programming languages,
> such as C, C++, Java, Perl, and Python, have what are called
> "assignment operators." The most important of these operators are
> "+=", "-=", "*=", and "/=".
> 
> On a recent thread, the usefulness of those operators was discussed in
> detail, so I won't rehash it.
> 
> One of the problems with adding these operators to Ada is that "/=" is
> already used for "not equals." So I suggested that the Ada version of
> these operators could be ":+", ":-", ":*", and ":/". I did not get
> much of a reply, but I think it's an idea worth considering, so I am
> repeating it here.
> 
> These operators would be consistent with the ":=" assignment operator
> of Ada, and I don't think they conflict with any established Ada
> operator. I actually think they make *more* sense than the usual "+="
> type operators. Consider, for example,
> 
>     count :+ 1
>     EulerAngles :* D2R
> 
> I'm wearing my asbestos underwear, so have at it!

The real problem is not to find a better sequence of characters. The real 
problems are:

1. Ada does not have any assignment operator. It has an assignment 
statement. Carefully observe all the consequences of that. When I and 
others proposed to allow operators be implemented by procedures, the goal 
was to approach this problem.

2. Ada isn't C++. One have to provide an easy and safe way to ensure that 
"+" and in-place-"+" have compatible semantics. The language default has to 
be safe. This is why I made another proposal to invent a mechanism 
instructing the compiler to deduce one operations from others. Such things 
exist presently for "/=" which is automatically deduced from "=". And for 
":=", which is automatically deduced from Finalize, Adjust and assignments 
of the components. IMO we need something like:

procedure ":+" (L : in out Matrix; R : Matrix);
function "+" (L, R : Matrix) return Matrix;
for "+" use ":+";

But it is not an easy issue. Consider tagged types. You have overridden 
":+", but not "+". What have the language to say in such cases? Again, Ada 
need not to become Ada += C++; One C++ is already too much for our planet.

-------
Provided 1.& 2. one could just enlarge the set of lexical elements and let 
the programmer to choose what he/she wants. I would like to see "<+>", 
"[+]", "(+)", "+:=", "<+>:=" etc added, but is that worth the efforts?

-- 
Regards,
Dmitry A. Kazakov
www.dmitry-kazakov.de



  parent reply	other threads:[~2003-06-25 10:28 UTC|newest]

Thread overview: 69+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-06-25  6:23 proposal for new assignment operators Russ
2003-06-25  8:49 ` Preben Randhol
2003-06-25 10:28 ` Dmitry A. Kazakov [this message]
2003-06-25 10:36   ` Lutz Donnerhacke
2003-06-25 17:49     ` Dmitry A. Kazakov
2003-06-26 10:37       ` Lutz Donnerhacke
2003-06-27  8:15         ` Dmitry A. Kazakov
2003-06-27 14:21           ` Hyman Rosen
2003-06-25 19:17   ` Russ
2003-06-25 10:39 ` Larry Kilgallen
2003-06-25 12:06   ` Preben Randhol
2003-06-25 13:40     ` Peter Hermann
2003-06-25 22:12     ` Georg Bauhaus
2003-06-26  8:03       ` Preben Randhol
2003-06-26  8:25         ` Vinzent Hoefler
2003-06-26 15:02       ` Stephen Leake
2003-06-26 17:54         ` Georg Bauhaus
2003-06-26 18:32           ` Stephen Leake
2003-06-27 13:21             ` Georg Bauhaus
2003-06-26 16:32       ` Preben Randhol
2003-06-26 17:41         ` Georg Bauhaus
2003-06-26 17:58           ` Preben Randhol
2003-06-26  2:36     ` Steve
2003-06-26  2:33   ` Russ
2003-06-26 23:02     ` John R. Strohm
2003-06-25 14:07 ` Frank J. Lhota
2003-06-25 16:27   ` Warren W. Gay VE3WWG
2003-06-26  3:09     ` Russ
2003-06-26  6:27       ` Vinzent Hoefler
2003-06-26 10:49       ` Larry Kilgallen
2003-06-26 18:08         ` Russ
2003-06-26 18:19           ` Preben Randhol
2003-06-26 18:45           ` Larry Kilgallen
2003-07-02 15:57             ` Kevin Cline
2003-07-02 17:10               ` tmoran
2003-07-02 18:27                 ` Hyman Rosen
2003-07-02 20:20                   ` tmoran
2003-07-03  1:48               ` Richard Riehle
2003-07-03  3:07                 ` Hyman Rosen
2003-07-03  5:12                   ` Randy Brukardt
2003-07-03 13:03                     ` Hyman Rosen
2003-07-03 14:46                   ` Stephen Leake
2003-07-04  1:17                   ` James Rogers
2003-07-07  4:29                     ` Hyman Rosen
2003-07-08  1:10                       ` James Rogers
2003-07-08 13:59                         ` Hyman Rosen
2003-07-09  0:12                           ` James Rogers
2003-07-09  3:00                             ` Hyman Rosen
2003-07-07 15:36                 ` Matthew Heaney
2003-07-14  1:39                   ` Richard Riehle
2003-07-14  2:54                     ` Hyman Rosen
2003-07-16  3:14                       ` Richard Riehle
2003-06-27 13:34       ` Georg Bauhaus
2003-06-27 23:12         ` Russ
2003-06-27 23:21           ` Larry Kilgallen
2003-06-28 18:51             ` Russ
2003-06-27 18:02       ` Warren W. Gay VE3WWG
2003-06-28  3:50         ` Russ
2003-06-30 15:58           ` Warren W. Gay VE3WWG
2003-06-25 19:44 ` Bill Findlay
2003-06-26  2:06   ` Russ
2003-06-26  2:33     ` Bill Findlay
2003-06-26  5:54     ` Karel Miklav
2003-06-26 12:17     ` Georg Bauhaus
2003-06-26 12:52     ` Joseph Dalton
2003-06-26 18:11     ` Frank J. Lhota
  -- strict thread matches above, loose matches on Subject: below --
2003-06-27  5:35 christoph.grein
2003-06-27  9:57 ` Preben Randhol
2003-06-27 14:11 ` Georg Bauhaus
replies disabled

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