From: "Yannick Duchêne (Hibou57)" <yannick_duchene@yahoo.fr>
Subject: Re: Ada2012 : Expression functions and extended return statements
Date: Wed, 01 Feb 2012 00:20:02 +0100
Date: 2012-02-01T00:20:02+01:00 [thread overview]
Message-ID: <op.v8y1ror0ule2fv@douda-yannick> (raw)
In-Reply-To: 26f343ea-d694-4089-b594-f32b471db3a4@m4g2000vbc.googlegroups.com
Le Fri, 06 Jan 2012 09:45:26 +0100, Martin <martin@thedowies.com> a écrit:
> Am I correct in thinking these 2 parts of the language can't be
> 'mixed'?...
>
> There doesn't seem to be anything that allows anything like, e.g.
>
> package Foo is
> type T (<>) is tagged private;
> function Create return T is
> (Result : T do Result.I := 1);
> private
> type T is tagged record
> I : Integer;
> end record;
> end Foo;
Private stuff in the public part is funny, don't you think ?
> Also, on the topic of extended return statements...
>
> What's the rational for having to explicitly repeat the return type?
> Seems rather redundant to my eyes. I wouldn't have minded:
At least because Ada does not have Type Inference. You have to declare the
returned entity, just like you would do with a classic return‑by‑copy (*).
You have to build something in‑place, so have to declare what you build,
even if it's not tagged and class‑wide.
Sorry, can't see better words to explain.
(*) Example:
function F return String
is
Result : String;
begin
Result := "....";
P (Result); -- in/out Result
-- Etc.
return Result;
end F;
--
“Syntactic sugar causes cancer of the semi-colons.” [1]
“Structured Programming supports the law of the excluded muddle.” [1]
[1]: Epigrams on Programming — Alan J. — P. Yale University
prev parent reply other threads:[~2012-01-31 23:20 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-06 8:45 Ada2012 : Expression functions and extended return statements Martin
2012-01-06 9:45 ` stefan-lucks
2012-01-06 10:02 ` Martin
2012-01-06 11:23 ` Peter C. Chapin
2012-01-06 11:37 ` Martin
2012-01-06 13:13 ` Dmitry A. Kazakov
2012-01-06 14:45 ` Martin Dowie
2012-01-06 15:07 ` Martin
2012-01-06 16:40 ` Robert A Duff
2012-01-06 17:04 ` Martin Dowie
2012-01-19 7:47 ` David Thompson
2012-01-06 17:20 ` Dmitry A. Kazakov
2012-01-07 1:47 ` Randy Brukardt
2012-01-07 9:21 ` Dmitry A. Kazakov
2012-01-06 16:45 ` Adam Beneschan
2012-01-06 16:36 ` Adam Beneschan
2012-01-07 14:54 ` stefan-lucks
2012-01-07 15:11 ` Dmitry A. Kazakov
2012-01-08 9:41 ` stefan-lucks
2012-01-09 6:16 ` Randy Brukardt
2012-01-06 15:11 ` J-P. Rosen
2012-01-06 15:26 ` Martin
2012-01-07 1:50 ` Randy Brukardt
2012-01-07 10:12 ` Martin
2012-01-07 12:22 ` Simon Wright
2012-01-07 17:10 ` Martin
2012-01-09 6:21 ` Randy Brukardt
2012-01-09 7:57 ` Martin Dowie
2012-01-31 23:34 ` Yannick Duchêne (Hibou57)
2012-01-06 16:33 ` Adam Beneschan
2012-01-06 16:38 ` Adam Beneschan
2012-01-06 22:12 ` Robert A Duff
2012-01-31 23:20 ` Yannick Duchêne (Hibou57) [this message]
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox