From: Robert A Duff <bobduff@shell01.TheWorld.com>
Subject: Re: Newbie question
Date: Thu, 12 Mar 2009 11:07:00 -0400
Date: 2009-03-12T11:07:00-04:00 [thread overview]
Message-ID: <wcc1vt2vkyz.fsf@shell01.TheWorld.com> (raw)
In-Reply-To: 0ff2f139-06cf-4fa5-8c0d-f97c43a33186@s20g2000yqh.googlegroups.com
Ludovic Brenta <ludovic@ludovic-brenta.org> writes:
> Solution 3: introduce a new value for Piece_Type_T:
>
> type Piece_Type_T is (None, Pawn, Knight, Bishop, Rook, Queen, King);
>
> I don't know which is the best solution; perhaps you'd like to try
> them all and see how well they integrate with the algorithms. I think
> Solution 3 is the most error-prone, though.
A variation on 3 is not error prone:
type Optional_Piece_Kind is
(None, Pawn, Knight, Bishop, Rook, Queen, King);
subtype Piece_Kind is Optional_Piece_Kind range
Optional_Piece_Kind'Succ(None)..Optional_Piece_Kind'Last;
type Square(Kind: Optional_Piece_Kind is := None) is
record
case Kind is
when None => null;
when Piece_Kind => Color: ...;
end case;
end record;
type Rank is range 1..8;
type File is new Character range 'A'..'H';
-- Maybe I've got this backwards???
type Board is array (Rank, File) of Square;
As somebody said, you will want a default value for the discriminant, in
all these variations. Having a default has the odd property that it
allows you to change the discriminant by a whole-record assignment.
This oddity often confuses beginners to Ada.
- Bob
next prev parent reply other threads:[~2009-03-12 15:07 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-03-12 13:29 Newbie question Olivier Scalbert
2009-03-12 13:48 ` Ludovic Brenta
2009-03-12 14:16 ` Olivier Scalbert
2009-03-12 14:31 ` Ludovic Brenta
2009-03-12 14:32 ` stefan-lucks
2009-03-12 14:36 ` Ludovic Brenta
2009-03-12 17:14 ` stefan-lucks
2009-03-12 18:29 ` Adam Beneschan
2009-03-12 15:03 ` Jacob Sparre Andersen
2009-03-12 15:07 ` Robert A Duff [this message]
2009-03-12 17:16 ` Georg Bauhaus
2009-03-13 1:59 ` tmoran
2009-03-15 13:46 ` Olivier Scalbert
2009-03-21 18:08 ` Olivier Scalbert
2009-03-21 18:22 ` (see below)
2009-03-21 18:29 ` Olivier Scalbert
2009-03-21 18:36 ` Georg Bauhaus
2009-03-21 18:39 ` Olivier Scalbert
2009-03-22 12:40 ` (see below)
2009-03-22 13:19 ` Olivier Scalbert
2009-03-21 18:39 ` Jeffrey R. Carter
2009-03-23 8:24 ` Jean-Pierre Rosen
-- strict thread matches above, loose matches on Subject: below --
2007-11-23 13:22 Sir Chewbury Gubbins
2007-11-23 14:01 ` Sir Chewbury Gubbins
2007-11-24 16:49 ` Stephen Leake
2007-11-24 17:08 ` Peter C. Chapin
2007-11-25 19:25 ` Stephen Leake
2007-11-29 0:46 ` Robert A Duff
2005-07-18 11:26 Francisco J. Montoya
2005-07-18 13:14 ` Martin Dowie
2005-07-18 13:51 ` Alex R. Mosteo
2005-07-18 20:27 ` Martin Dowie
2005-07-18 15:28 ` Jeffrey Carter
2005-07-18 17:40 ` Martin Krischik
2005-07-03 17:58 newbie question e.coli
2005-07-03 18:32 ` Dmitry A. Kazakov
2004-08-04 6:42 Newbie Question leke
2004-08-04 8:55 ` Frank
2004-08-04 9:51 ` Martin Dowie
2001-12-24 13:52 Newbie question Jasbinder S Uppal
2001-12-24 20:06 ` Michal Nowak
2001-12-24 21:13 ` martin.m.dowie
2001-12-25 12:36 ` Michal Nowak
2001-12-27 14:25 ` Alfred Hilscher
2001-12-29 21:54 ` Michal Nowak
2001-12-31 17:51 ` Jasbinder S Uppal
2002-01-01 21:26 ` Michal Nowak
2000-05-25 0:00 olsonm76
2000-05-26 0:00 ` Robert Dewar
1999-03-18 0:00 newbie question Kenneth Lee
1999-03-18 0:00 ` Tom Moran
1999-03-18 0:00 ` Kenneth Lee
1999-03-18 0:00 ` Nick Roberts
1999-03-18 0:00 ` Andreas Winckler
1999-03-19 0:00 ` Kenneth Lee
1999-03-19 0:00 ` Michael F Brenner
1999-03-19 0:00 ` ELMO
1999-03-21 0:00 ` Matthew Heaney
1999-03-19 0:00 ` Michael F Brenner
1999-03-19 0:00 ` Nick Roberts
1999-03-20 0:00 ` Nick Roberts
1999-03-19 0:00 ` robert_dewar
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox