comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: Strings with discriminated records
Date: Tue, 29 May 2018 09:49:18 +0200
Date: 2018-05-29T09:49:18+02:00	[thread overview]
Message-ID: <pej0lt$8rl$1@gioia.aioe.org> (raw)
In-Reply-To: 137bcc76-2489-4557-979b-5efeecbd9289@googlegroups.com

On 2018-05-29 12:27 AM, Mehdi Saada wrote:
> I see, and I would expect a constant declaration M: constant nights.message := nights.create("hello world);
> to have exactly the same implementation. I am right ?

Yes. Renaming temporary objects is probably a language design bug. But 
renaming is broken in so many ways that one more, one less does not make 
much difference.

BTW, If I would allow renaming a function result, then that would have 
lazy evaluation/closure semantics.

> After all you do or not do exactly the same, as far as I understood.

There are subtle and not so subtle differences, like sliding or not 
array indices.

It is best to use rename only where it was originally intended, e.g.

1. for renaming long named objects/packages:

    X : T renames A.B.C.D.E.X;

2. for renaming view conversions:

    X : T'Class renames T'Class (Y);

3. for renaming array/list elements and record members:

    for I in A'Range loop
       declare
          Current : T renames A (I);
       begin
          ...

4. for resolving name clashes:

    type T is new Integer;
    function Integer_Add (Left, Right : Integer)
       return Integer renames "+"; -- Going to override, so keep the old
    function "+" (Left, Right : Integer)
       return Integer renames "+"; -- The new one

-- 
Regards,
Dmitry A. Kazakov
http://www.dmitry-kazakov.de


  parent reply	other threads:[~2018-05-29  7:49 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-05-26 21:43 Strings with discriminated records NiGHTS
2018-05-26 23:42 ` Shark8
2018-05-27  1:42   ` NiGHTS
2018-05-27  8:39     ` Dmitry A. Kazakov
2018-05-27 12:22       ` Mehdi Saada
2018-05-27 12:40         ` Dmitry A. Kazakov
2018-05-27 14:34       ` NiGHTS
2018-05-27 14:50         ` Dmitry A. Kazakov
2018-05-27 15:19           ` NiGHTS
2018-05-27 15:32             ` AdaMagica
2018-05-27 16:22               ` NiGHTS
2018-05-29 22:31           ` Randy Brukardt
2018-05-30  7:29             ` Dmitry A. Kazakov
2018-05-30 20:11               ` Randy Brukardt
2018-05-27 12:48     ` Mehdi Saada
2018-05-27 13:03       ` Dmitry A. Kazakov
2018-05-27 17:11 ` NiGHTS
2018-05-27 18:07   ` Simon Wright
2018-05-27 23:08     ` NiGHTS
2018-05-28  1:44       ` Jere
2018-05-28  3:05         ` NiGHTS
2018-05-28  3:23           ` NiGHTS
2018-05-27 18:25   ` Dmitry A. Kazakov
2018-05-27 22:44     ` NiGHTS
2018-05-28  7:29       ` Dmitry A. Kazakov
2018-05-28  7:42       ` Simon Wright
2018-05-28 18:38         ` Shark8
2018-05-28 21:15           ` Mehdi Saada
2018-05-28 21:48             ` Shark8
2018-05-28 22:27               ` Mehdi Saada
2018-05-28 23:59                 ` Shark8
2018-05-29  0:41                   ` Dan'l Miller
2018-05-30 17:11                     ` Shark8
2018-05-29  7:49                 ` Dmitry A. Kazakov [this message]
2018-05-29  9:31                   ` AdaMagica
2018-05-29 10:14                     ` Dmitry A. Kazakov
2018-05-29 13:40                   ` Dan'l Miller
2018-05-29 14:04                     ` Dmitry A. Kazakov
2018-05-29 22:41                       ` Randy Brukardt
2018-05-30  5:00                         ` J-P. Rosen
2018-05-30 20:09                           ` Randy Brukardt
2018-05-31  4:19                             ` J-P. Rosen
2018-05-31 22:18                               ` Randy Brukardt
2018-06-01 13:35                                 ` Dan'l Miller
2018-06-01 15:20                                   ` Dmitry A. Kazakov
2018-05-28 13:55 ` NiGHTS
2018-05-29 14:37 ` Mehdi Saada
2018-05-29 22:44   ` Randy Brukardt
2018-05-29 22:41 ` Mehdi Saada
2018-05-30 19:46   ` Randy Brukardt
2018-05-30 19:48     ` 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