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
next prev 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