comp.lang.ada
 help / color / mirror / Atom feed
From: "Dmitry A. Kazakov" <mailbox@dmitry-kazakov.de>
Subject: Re: another way to shoot yourself in the foot?
Date: Sat, 21 Jun 2008 10:56:10 +0200
Date: 2008-06-21T10:56:10+02:00	[thread overview]
Message-ID: <483ugmvkl2ea.1hrqsq7ru4t1x$.dlg@40tude.net> (raw)
In-Reply-To: HaX6k.217614$yE1.198719@attbi_s21

On Fri, 20 Jun 2008 23:37:11 GMT, Jeffrey R. Carter wrote:

> Robert A Duff wrote:
>> 
>> Build-in-place is determined by the type, not by the
>> syntactic form of the return statement.
> 
> I'm not sure I see any point to the extended return statement.

I agree, it was introduced solely for dealing with limited-valued
functions. IMO there should be no such thing as "limited-valued" at all.
In-place initialization should be handled by proper constructors.

> Wouldn't it have 
> been clearer and simpler to have done something like
> 
>     Result : return T;

Result : T renames return;
    -- Would be IMO better, semantically it is a renaming.

>     ...
> begin
>     ...
>     return Result;

Why this? With your syntax it is clear what is going to be returned:

function Foo return T is
   Result : return T;  -- This will be the result
begin
   ...
end Foo; -- Returns Result, obviously, as declared

> with a rule that only 1 "return variable" may be in scope at a time?

As well as that there may be no return statements returning something
else...

One problem with your proposal is:

function Foo (...) return String is
begin
   declare
      Result : return String (1..200);  -- Going to return 200 characters
   begin
      Result (1) := 'a'; -- Here the result has to be allocated
      if HALT (x) then
         return;  -- Return from Foo with Result
      end if;
   end;  -- Drop already allocated and initialized result
   return "Hallo!";  -- Return a completely different thing
end Foo;

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



  reply	other threads:[~2008-06-21  8:56 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-20  9:03 another way to shoot yourself in the foot? fedya_fedyakoff
2008-06-20  9:34 ` Dmitry A. Kazakov
2008-06-20  9:48   ` fedya_fedyakoff
2008-06-20 10:01     ` Ludovic Brenta
2008-06-20 10:05 ` christoph.grein
2008-06-20 10:26   ` Dmitry A. Kazakov
2008-06-20 16:12     ` Adam Beneschan
2008-06-20 15:48   ` Adam Beneschan
2008-06-20 19:27   ` Robert A Duff
2008-06-20 23:37     ` Jeffrey R. Carter
2008-06-21  8:56       ` Dmitry A. Kazakov [this message]
2008-06-22 20:44         ` Robert A Duff
2008-06-23  7:49           ` Dmitry A. Kazakov
2008-06-24  4:02             ` george.priv
2008-06-24  7:30               ` Dmitry A. Kazakov
2008-06-24 17:16                 ` Robert A Duff
2008-06-24 19:15                   ` Jeffrey R. Carter
2008-06-24 20:31                     ` Robert A Duff
2008-06-24 20:50                       ` Ludovic Brenta
2008-06-24 23:02                         ` Robert A Duff
2008-06-24 23:42                         ` Georg Bauhaus
2008-06-24 21:24                       ` Jeffrey R. Carter
2008-06-24 23:24                         ` Robert A Duff
2008-06-25 15:07                       ` Adam Beneschan
2008-06-24 14:59             ` Adam Beneschan
2008-06-24 16:41               ` Dmitry A. Kazakov
2008-06-24 17:20                 ` Robert A Duff
2008-06-24 17:52                   ` Dmitry A. Kazakov
2008-06-24 23:35                     ` Georg Bauhaus
2008-06-25  8:09                       ` Dmitry A. Kazakov
2008-06-25 10:32                         ` Georg Bauhaus
2008-06-25 12:06                           ` Dmitry A. Kazakov
2008-06-22 20:37       ` Robert A Duff
2008-06-22 21:25         ` Jeffrey R. Carter
2008-07-04 20:52           ` Colin Paul Gloster
2008-07-04 22:15             ` (see below)
2008-07-05 16:06               ` Colin Paul Gloster
2008-07-05 13:38             ` Gary Scott
2008-07-05 16:42               ` Colin Paul Gloster
2008-07-05 19:00                 ` Gary Scott
2008-07-09 19:39                   ` Colin Paul Gloster
2008-07-09 20:35                     ` Richard Maine
2008-07-09 22:49                       ` Terence
2008-07-10  1:07                         ` Gary Scott
2008-07-10 14:10                       ` Colin Paul Gloster
2008-07-10 14:57                         ` fj
2008-07-10 16:47                           ` Richard Maine
2008-07-10 17:03                         ` Dick Hendrickson
2008-07-10 17:26                           ` Craig Powers
2008-07-10 19:55                             ` James Giles
2008-07-10 20:45                               ` Dick Hendrickson
2008-07-10 21:22                                 ` Richard Maine
2008-07-10 21:29                                   ` Craig Powers
2008-07-10 20:45                               ` Craig Powers
2008-07-10 19:51                           ` James Giles
2008-07-11 15:02                             ` Colin Paul Gloster
replies disabled

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