From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=ham autolearn_force=no version=3.4.4 X-Google-Thread: 103376,b88383a5d9c51aa0 X-Google-Attributes: gid103376,domainid0,public,usenet X-Google-Language: ENGLISH,ASCII Path: g2news2.google.com!postnews.google.com!q16g2000yqg.googlegroups.com!not-for-mail From: Ludovic Brenta Newsgroups: comp.lang.ada Subject: Re: Ada-Singleton-Why does it work like this? Date: Wed, 25 Mar 2009 07:40:04 -0700 (PDT) Organization: http://groups.google.com Message-ID: <21fe3b9c-776d-47b6-8eaa-bb27ba53e83f@q16g2000yqg.googlegroups.com> References: <5a7a870c-40e2-4803-8753-0f9cfd2b800f@k2g2000yql.googlegroups.com> <13su65cm8b5ov$.1198qla32cc3i$.dlg@40tude.net> <0c060dc1-ee16-48cd-89cf-5f4f02185ee8@c11g2000yqj.googlegroups.com> NNTP-Posting-Host: 153.98.68.197 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1237992004 3930 127.0.0.1 (25 Mar 2009 14:40:04 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Wed, 25 Mar 2009 14:40:04 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: q16g2000yqg.googlegroups.com; posting-host=153.98.68.197; posting-account=pcLQNgkAAAD9TrXkhkIgiY6-MDtJjIlC User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7,gzip(gfe),gzip(gfe) Xref: g2news2.google.com comp.lang.ada:5270 Date: 2009-03-25T07:40:04-07:00 List-Id: On Mar 25, 3:10=A0pm, "patrick.gu...@googlemail.com" wrote: > > If you want to declare an access type, you do not need an instance; > > you only need a type, which may be unconstrained: > > > type T (<>) is limited private; > > type Access_T is access T; -- OK > > > If you want an access *value*, then you do need an object; either one > > from a storage pool, or a pre-existing one: > > > Access_Value : Access_T :=3D new T'(...); > > -- storage pool. Possible only in the package declaring T, since T is > > private. > > > Other_Access_Value : Access_T :=3D Access_Value; -- possible anywhere > > > Neither Access_Value nor Other_Access_Value allow you to see the > > components of T because T is private. > > I=B4m currently trying to formulate some rules for using Ada myself, > trying to explain the concepts which are used. I got one last question > concerning the box-operator (<>) in this particular context. > It declares a type to be unconstrained, which means, that it needs to > be initialized. I only found this construction together with generic > types, for example here:http://en.wikibooks.org/wiki/Ada_Programming/Gene= rics > When I try to define a sort-routine I can use this generic form to > state, that discrete types may be used as input for such a routine. > But as I don=B4t use this construct together with the keyword generic, I > simply don=B4t get the meaning of (<>) in my Singleton-context. Do I say > that the type I declare is a discrete type? And what would I have to > do to use this type if it wasn=B4t limited and private? > > Thank you! Please re-read the wikibook chapter on generics; there is a difference between: generic type T1 is <>; -- any discrete type and generic type T2 (<>) is private; -- any type with or without discriminants Formally, T2 is declared to have "unknown discriminants". This is also the case of the singleton type. Because, to the outside world, it has unknown discriminants, it is unconstrained. The full view of the type (in the private part of the package) may or may not specify discriminants. -- Ludovic Brenta.