From: Brad Moore <bmoore.ada@gmail.com>
Subject: Re: Ada Distilled problem
Date: Fri, 4 Mar 2016 10:58:15 -0800 (PST)
Date: 2016-03-04T10:58:15-08:00 [thread overview]
Message-ID: <cd9a0037-394c-43d3-ba37-2fda8e6ca898@googlegroups.com> (raw)
In-Reply-To: <lysi06je8p.fsf@pushface.org>
On Friday, March 4, 2016 at 11:21:28 AM UTC-7, Simon Wright wrote:
> A Stack Overflow user has been having problems[1] trying to use the
> queue manager described at page 82 of Ada Distilled (2005 version)[2].
>
> To see the problem in its essentials, the (inoperative!) spec could be
>
> generic
> type Element is tagged private;
> package Lists is
> type Item is new Element with private;
> type List is tagged private;
>
> procedure Insert (Self : in out List; I : Item'Class);
>
> private
> type Item is new Element with null record;
> type List is tagged null record;
> end Lists;
>
> with a calling program
>
> with Lists;
> procedure Main is
> type Temp is tagged null record;
> package Temp_List is new Lists (Temp);
>
> FL : Temp_List.List;
>
> Instance : Temp := Temp'(null record);
>
> begin
> Temp_List.Insert (Self => FL, I => Instance);
> end Main;
>
> resulting in
>
> main.adb:11:40: expected type "Item'Class" defined at lists.ads:4,
> instance at line 4
> main.adb:11:40: found type "Temp" defined at line 3
>
> and I can't see any way of twisting this so it can compile. And, in any
> case, what is the point of "type Item"?
I dont see any point. Looks to me like the example needs to be corrected.
I would change the 'I' parameter of the Insert to be of type Element'Class, then this should compile.
Brad
>
> Has anyone managed to use the Ada Distilled design? (of course, nowadays
> one would implement either directly or over predesigned containers).
>
> [1]
> http://stackoverflow.com/questions/35790004/ada-package-with-generic-tagged
> [2] http://www.adaic.org/learn/materials/#ada_2005_books - first entry
next prev parent reply other threads:[~2016-03-04 18:58 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-03-04 18:21 Ada Distilled problem Simon Wright
2016-03-04 18:58 ` Brad Moore [this message]
2016-03-04 21:36 ` Simon Wright
2016-03-04 19:01 ` Jeffrey R. Carter
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox