comp.lang.ada
 help / color / mirror / Atom feed
From: 18k11tm001@sneakemail.com (Russ)
Subject: Re: proposal for new assignment operators
Date: 25 Jun 2003 12:17:42 -0700
Date: 2003-06-25T19:17:43+00:00	[thread overview]
Message-ID: <bebbba07.0306251117.57e8fe08@posting.google.com> (raw)
In-Reply-To: bdbtav$regf8$1@ID-77047.news.dfncis.de

"Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de> wrote in message news:<bdbtav$regf8$1@ID-77047.news.dfncis.de>...
> Russ wrote:
> >     count :+ 1
> >     EulerAngles :* D2R

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

Agreeing on a sequence of characters is not a *technical* problem, but
it is a problem nevertheless, and it could actually turn out to be
very difficult

> 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.

As someone pointed out on an earlier thread, "+=", ":+", or whatever
you call it, is just "semantic sugar" for a procedure like
"Add_Matrix". It really has nothing to do with assignment per se. So I
fail to see the relevance of the fact that Ada has no assignment
operator.

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

I agree it would be nice to have language enforcement of consistency
between operators, but I think that would be going beyond what Ada
already allows. Does Ada require a user-defined "+" operator to be
consistent with the corresponding "-" operator? No. "+" could add
matrices, and "-" could send email to Santa Claus.

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

How about

function "+" (L, R : Matrix) return Matrix is
    Result: Matrix := L;
    begin
    Result :+ R;
    return Result;
    end "+";

> 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.

Maybe I'm missing something, but I don't see why these concerns are
any different than they would be for any other function or procedure.

> -------
> 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?



  parent reply	other threads:[~2003-06-25 19:17 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
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 [this message]
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