comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: A function that cannot be called?
Date: Thu, 18 Oct 2018 16:30:08 -0500
Date: 2018-10-18T16:30:08-05:00	[thread overview]
Message-ID: <pqau10$us1$1@franka.jacob-sparre.dk> (raw)
In-Reply-To: pqanbb$hl5$1@dont-email.me

"G.B." <bauhaus@notmyhomepage.invalid> wrote in message 
news:pqanbb$hl5$1@dont-email.me...
> On 18.10.18 19:03, AdaMagica wrote:
>> Am Donnerstag, 18. Oktober 2018 14:14:32 UTC+2 schrieb G.B.:
>>> package What is
>>>
>>>       type Void (<>) is private;
>>>
>>>       function Impossible (X : T) return Void;
>>>
>>> private
>> ...
>>> end What;
>>
>> Of course this is possible. Declarations of objects of type Void must 
>> have an initial value, which can be provided via the "constructor" 
>> Impossible:
>>
>> X: Void := Impossible (T0);
>
> Impossible needs to return a value. But a returned object can
> neither be declared nor a value constructed, since type Void
> has an unknown discriminant so that no initial constraint
> can be given anywhere.

It can always be given in the body of the package, since the full type for 
Void has to have some declaration with "known" discriminants. (Unknown 
discriminants aren't allowed on full types.) And that's the point: with this 
declaration, the only objects that can be created are those created by the 
package, which is fully within the control of the creator of the 
abstraction. If you don't want any objects at all (which would be weird, as 
types have no real use until some object is created of it or a descendant), 
then don't create any.

                                        Randy.


  reply	other threads:[~2018-10-18 21:30 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-10-18 12:14 A function that cannot be called? G.B.
2018-10-18 15:33 ` Stefan.Lucks
2018-10-18 20:21   ` G.B.
2018-10-18 20:57     ` Niklas Holsti
2018-10-19  7:15     ` Dmitry A. Kazakov
2018-10-19 13:55       ` G.B.
2018-10-19 15:31         ` Dmitry A. Kazakov
2018-10-18 17:03 ` AdaMagica
2018-10-18 19:36   ` G.B.
2018-10-18 21:30     ` Randy Brukardt [this message]
2018-10-19 14:00       ` G.B.
2018-10-19 15:39         ` Dmitry A. Kazakov
2018-10-20  1:34         ` Randy Brukardt
2018-10-20  9:14           ` G.B.
2018-10-20 11:13             ` Simon Wright
2018-10-20 14:11               ` Dmitry A. Kazakov
2018-10-21  9:25                 ` G.B.
2018-10-21  9:07               ` G.B.
2018-10-21  9:51                 ` Dmitry A. Kazakov
2018-10-21 10:57                 ` Niklas Holsti
2018-10-21 18:00                 ` Simon Wright
2018-10-19  8:48 ` AdaMagica
2018-10-19 11:15   ` G.B.
2018-10-19 17:06     ` AdaMagica
2018-10-19 19:57       ` G.B.
2018-10-19 22:06         ` Jere
2018-10-21 10:14           ` G.B.
2018-10-21 11:30             ` Egil H H
2018-10-23 11:45               ` G.B.
2018-10-23 14:35                 ` Jere
2018-10-23 14:57                   ` Dmitry A. Kazakov
2018-10-23 17:49                     ` G.B.
2018-10-23 19:25                       ` Dmitry A. Kazakov
2018-10-24  7:35                         ` G.B.
2018-10-24  8:14                           ` Dmitry A. Kazakov
2018-10-19 18:19 ` marciant
2018-10-19 18:22   ` marciant
2018-10-20  1:36     ` Randy Brukardt
2018-10-20  2:54       ` marciant
2018-10-19 20:25   ` Shark8
2018-10-19 23:28     ` marciant
replies disabled

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