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