[net.lang.ada] What's wrong with this package?

mcdaniel (11/03/82)

#N:uiucdcs:28500001:000:2395
uiucdcs!mcdaniel    Nov  2 20:13:00 1982

I don't understand why I'm getting errors in the following code. Nobody
here understands Ada, and my book and the manual indicate that this 
should work, so I'm at my wit's end. I can't think of anything to do but
to ask the net. (Errorless code and comments have been deleted.
The compiler is the non-certified "ida" cross-compiler for the Intel 432).
    1    -- generic package SET_OF 
    2    -- purpose: to provide set handling facilities.
    3    -- Parameters: 
    4    --    BASE: the base type of the set (the type of the set's elements).
    5    --          Must be a discrete type (integer, enumeration, etc.).
   22   generic
   23       type BASE is ( <> );
   24   package SET_OF is
   25       type SET is private;
   26       type LIST is array(NATURAL range <>) of BASE;
   27            -- I'd like to make LIST private or even limited private,
   28            -- but the full type declaration cannot declare an 
   29            -- unconstrained array type. (sigh)
   30       EMPTY, FULL: constant SET;
   34       function "+" (X, Y: SET) return SET;
   35       function "*" (X, Y: SET) return SET;
   36       function "-" (X, Y: SET) return SET;
   40   private
   41       type SET is array(BASE) of BOOLEAN;
   42       EMPTY: constant SET := (SET'RANGE => FALSE);
   43       FULL : constant SET := (SET'RANGE => TRUE );
   44   end SET_OF;
   46   package body SET_OF is
   61       function "+" (X, Y: SET) return SET is
   62       begin
   63           return "or" (X, Y);
                       1
ERROR 1: Too few components: in dimension#1
   64       end "+";
   65       function "*" (X, Y: SET) return SET is
   66       begin
   67           return X and Y;
                         1
ERROR 1: Too few components: in dimension#1
   68       end "*";
   69       function "-" (X, Y: SET) return SET is
   70       begin
   71           return X xor Y;
                         1
ERROR 1: Too few components: in dimension#1
   72       end "-";
   91   end SET_OF;
What am I doing wrong (if anything)?
Also: can anyone devise a generic package to perform these boolean vector
operations (using whatever parameters are needed)? Mail me any
answers to either question and I'll summarize the results to the net,
if it's of general interest.
                                 Tim McDaniel

                                      (. . . pur-ee!uiucdcs!mcdaniel)

tihor (11/04/82)

#R:uiucdcs:28500001:cmcl2:15900001:000:140
cmcl2!tihor    Nov  3 20:15:00 1982

I just ran this through NYU ADA/Ed and it produced no error messages. 
I couldn't spot any problems with those constructs as used off hand.