comp.lang.ada
 help / color / mirror / Atom feed
From: Brad Moore <bmoore.ada@gmail.com>
Subject: Re: A few questions
Date: Sun, 15 Nov 2015 09:56:45 -0800 (PST)
Date: 2015-11-15T09:56:45-08:00	[thread overview]
Message-ID: <68087ee3-fc89-4c13-b5c4-3cd8984e9643@googlegroups.com> (raw)
In-Reply-To: <n22v55$i2h$1@loke.gir.dk>

On Thursday, November 12, 2015 at 2:08:54 PM UTC-7, Randy Brukardt wrote:
> "Simon Wright" <simon@pushface.org> wrote in message 
> news:ly4mgrj8ab.fsf@pushface.org...
> > "Randy Brukardt" <randy@rrsoftware.com> writes:
> >
> >> "Simon Wright" <simon@pushface.org> wrote in message
> >> news:lyziyskeu2.fsf@pushface.org...
> >
> >>> Oh, it should have been
> >>>
> >>>   for P in F552A00_Prime_Numbers.Prime_Number_Set'(Max_Value =>
> >>> 31).Iterate
> >>>      loop
> >>
> >> I probably would have made type Prime_Number_Set directly the iterator
> >> type (I don't see any other need for it), which would get rid of the
> >> need for the ".Iterate". An iterator doesn't necessarily have to have
> >> anything to do with a container!
> >
> > Hmm.
> >
> > A Prime_Number_Set is a new Prime_Number_Iterator.Forward_Iterator;
> > Iterate returns a Prime_Number_Iterator.Forward_Iterator'Class.
> >
> > I tried without the .Iterate, as before, and with
> >
> >   for P in Prime_Number_Set'Class (Prime_Number_Set'(Max_Value => 30))
> >
> > (just in case) and as before got the 'expected a discrete type' error.
> 
> It should work either way. But does it work if you write:
> 
>    for P in Prime_Number_Iterator.Forward_Iterator'Class 
> (Prime_Number_Set'(Max_Value => 30))

This doesn't work either

> 
> ?? If so, GNAT surely has a bug (the type conversion shouldn't change 
> anything). You could also try:
> 
>    for P in 
> Prime_Number_Iterator.Forward_Iterator'(Prime_Number_Set'(Max_Value => 30))

This doesn't work also.

However, if I declare the iterator as a declared object as in;

   Iterator : constant Prime_Number_Iterator.Forward_Iterator'Class :=
     Prime_Number_Set'(Max_Value => 30);

Then I can do this;

   for Prime in Iterator loop
      Put_Line (Integer'Image (Prime));   
   end loop;

However, if I declare it this way...

   Iterator : constant Prime_Number_Set :=
     Prime_Number_Set'(Max_Value => 30);

Then the loop above does not compile.

So it seems to me that there are some GNAT bugs in this area.

> 
> which also shouldn't change anything.
> 
> > Perhaps this is a GNAT bug?
> 
> Looks like it to me.
> 
> > On the other hand, why did Brad include function Iterate?
> 
> It appears that he wanted tracing of the initialization (as that is all it 
> does other than making a new iterator that is a copy of the first). It 
> shouldn't be necessary.

It's been a while since I wrote that example, and I'm not entirely sure why I did it that way, but to be honest, I think I started with the existing container iterators as my starting point example, which all have an Iterate function, and I may have just assumed I needed a function which returned an class-wide object.

If the Prime Number Iterator is useful as an example for others, it would be nice to eliminate the Iterate function from the example. It seems also that there should be some more tests written to cover the failure cases that we are discovering now. I'd be happy to update this ACATS test, if Randy thinks its worthwhile.

Brad


  reply	other threads:[~2015-11-15 17:56 UTC|newest]

Thread overview: 73+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-31 20:29 A few questions Laurent
2015-10-31 20:49 ` Dmitry A. Kazakov
2015-11-01 13:16   ` Laurent
2015-11-01  0:25 ` Jeffrey R. Carter
2015-11-01 13:30   ` Laurent
2015-11-03  6:25   ` Randy Brukardt
2015-11-01  9:05 ` Jacob Sparre Andersen
2015-11-01 13:40   ` Laurent
2015-11-01 18:14     ` Jacob Sparre Andersen
2015-11-01 18:40       ` Laurent
2015-11-01 13:42 ` brbarkstrom
2015-11-01 13:52   ` Laurent
2015-11-01 17:59     ` Jeffrey R. Carter
2015-11-01 18:35       ` Laurent
2015-11-02 13:25     ` brbarkstrom
2015-11-01 15:15   ` Dennis Lee Bieber
2015-11-01 16:33 ` gautier_niouzes
2015-11-01 16:36   ` gautier_niouzes
2015-11-01 18:17 ` Stephen Leake
2015-11-01 18:53   ` Laurent
2015-11-02  0:41     ` Dennis Lee Bieber
2015-11-02 16:42     ` Stephen Leake
2015-11-02 17:45 ` Simon Wright
2015-11-02 18:48   ` Simon Wright
2015-11-03  6:33     ` Randy Brukardt
2015-11-03  8:26       ` Simon Wright
2015-11-03  6:40   ` Randy Brukardt
2015-11-03  8:34     ` Simon Wright
2015-11-04 16:19       ` Simon Wright
2015-11-05  1:20         ` Randy Brukardt
2015-11-05  8:34           ` briot.emmanuel
2015-11-12 18:28             ` Randy Brukardt
2015-11-12 20:19               ` Simon Wright
2015-11-12 20:56               ` Dmitry A. Kazakov
2015-11-12 21:15                 ` Randy Brukardt
2015-11-13  8:40                   ` Dmitry A. Kazakov
2015-11-13 17:52                     ` Randy Brukardt
2015-11-13 20:37                       ` Dmitry A. Kazakov
2015-11-13 22:15                         ` Randy Brukardt
2015-11-14 11:42                           ` Dmitry A. Kazakov
2015-11-14 12:37                           ` Simon Wright
2015-11-14 17:24                             ` Shark8
2015-11-14 20:09                               ` Simon Wright
2015-11-15 18:54                             ` Brad Moore
2015-11-13  8:45               ` briot.emmanuel
2015-11-13 17:41                 ` Randy Brukardt
2015-11-14 19:57                   ` briot.emmanuel
2015-11-16 19:13                     ` Randy Brukardt
2015-11-16 20:47                       ` Dmitry A. Kazakov
2015-11-17 21:30                         ` Randy Brukardt
2015-11-18  9:53                           ` Dmitry A. Kazakov
2015-11-18 22:27                             ` Randy Brukardt
2015-11-19  8:52                               ` Dmitry A. Kazakov
2015-11-19 21:15                                 ` Randy Brukardt
2015-11-16 21:50                       ` Simon Wright
2015-11-17 21:33                         ` Randy Brukardt
2015-11-17 23:14                           ` Simon Wright
2015-11-17  8:49                       ` briot.emmanuel
2015-11-17 22:09                         ` Randy Brukardt
2015-11-05  8:45           ` Simon Wright
2015-11-05  8:52             ` Simon Wright
2015-11-12 18:29               ` Randy Brukardt
2015-11-12 18:32               ` Randy Brukardt
2015-11-12 20:02                 ` Simon Wright
2015-11-12 21:08                   ` Randy Brukardt
2015-11-15 17:56                     ` Brad Moore [this message]
2015-11-15 21:42                       ` Simon Wright
2015-11-16 19:16                       ` Randy Brukardt
  -- strict thread matches above, loose matches on Subject: below --
2015-02-07 17:43 Laurent
2015-02-07 22:15 ` Brad Moore
2015-02-08 22:37   ` Laurent
2015-02-09 13:56     ` Brad Moore
2015-02-09 18:36       ` Laurent
replies disabled

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