comp.lang.ada
 help / color / mirror / Atom feed
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



  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