> > type Piece_T(Color: Color_T) is > > � record > > � � case Color is > > � � � when White => > > � � � � White_Piece: Piece_Type_T; > > � � � when Black => > > � � � � Black_Piece: Piece_Type_T; > > � � � when None => > > � � � � null; > > � � end case; > > � end record; > > The problem with this is that you'd then need two code paths for > Black_Piece and White_Piece, every time. Right. Actually, I anticipated that you would *want* two code paths for the black and for the white pieces. Else, your approach the approach below is better. > To overcome this, here is solution 2a1: > type Square_T (Color : Color_T := None) is record > case Color is > when None => null; > when Black | White => Piece_Type : Piece_Type_T; > end case; > end record; -- ------ Stefan Lucks -- Bauhaus-University Weimar -- Germany ------ Stefan dot Lucks at uni minus weimar dot de ------ I love the taste of Cryptanalysis in the morning! ------