| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
BishBosh.State.CastleableRooksByLogicalColour
Description
AUTHOR- Dr. Alistair Ward
DESCRIPTION- The abscissae of those
Rooks, for the player of each logicalColour, which can still participate in castling.
Synopsis
- type TurnsByLogicalColour = TurnsByLogicalColour Turn
- data CastleableRooksByLogicalColour
- locateForLogicalColour :: CastleableRooksByLogicalColour -> LogicalColour -> Maybe [X]
- fromAssocs :: AbscissaeByLogicalColour -> CastleableRooksByLogicalColour
- fromBoard :: Board -> CastleableRooksByLogicalColour
- fromTurnsByLogicalColour :: TurnsByLogicalColour -> CastleableRooksByLogicalColour
- listIncrementalRandoms :: Zobrist random -> CastleableRooksByLogicalColour -> CastleableRooksByLogicalColour -> [random]
- unify :: Transformation
- takeTurn :: LogicalColour -> Turn -> Transformation
- hasCastled :: CastleableRooksByLogicalColour -> LogicalColour -> Bool
- canCastle :: CastleableRooksByLogicalColour -> LogicalColour -> Bool
- canCastleWith :: CastleableRooksByLogicalColour -> LogicalColour -> Coordinates -> Bool
- cantConverge :: CastleableRooksByLogicalColour -> CastleableRooksByLogicalColour -> Bool
Types
Type-synonyms
type TurnsByLogicalColour = TurnsByLogicalColour Turn Source #
Narrow the type, so the turn can be queried.
Data-types
data CastleableRooksByLogicalColour Source #
For the players of each logical colour, identifies the abscissae of those Rooks which can still participate in castling (when other constraints are removed).
Instances
Functions
locateForLogicalColour :: CastleableRooksByLogicalColour -> LogicalColour -> Maybe [X] Source #
Find the abscissae of all Rooks of the specified logical colour, which can still participate in castling.
Constructors
fromAssocs :: AbscissaeByLogicalColour -> CastleableRooksByLogicalColour Source #
Smart constructor.
fromBoard :: Board -> CastleableRooksByLogicalColour Source #
- Smart constructor.
- CAVEAT: doesn't know the move-history, so the wrong answer is possible.
fromTurnsByLogicalColour :: TurnsByLogicalColour -> CastleableRooksByLogicalColour Source #
Constructor.
listIncrementalRandoms Source #
Arguments
| :: Zobrist random | |
| -> CastleableRooksByLogicalColour | The old value. |
| -> CastleableRooksByLogicalColour | The new value. |
| -> [random] |
Generate the additional random-numbers required to correct the hash resulting from a change to the castleable Rooks.
Mutators
unify :: Transformation Source #
Relinquish the ability to disambiguate between "have Castled" (& therefore can't subsequently), & "Have lost the option to castle".
Arguments
| :: LogicalColour | Defines the side who took the specified turn. |
| -> Turn | |
| -> Transformation |
Update with the latest turn.
Predicates
hasCastled :: CastleableRooksByLogicalColour -> LogicalColour -> Bool Source #
Predicate.
canCastle :: CastleableRooksByLogicalColour -> LogicalColour -> Bool Source #
Predicate.
Arguments
| :: CastleableRooksByLogicalColour | |
| -> LogicalColour | |
| -> Coordinates |
|
| -> Bool |
Predicate.
cantConverge :: CastleableRooksByLogicalColour -> CastleableRooksByLogicalColour -> Bool Source #
- Determines whether two positions can't converge on each other.
- N.B.: in this function, the two positions are considered to be peers; nothing is assumed regarding which must do the convergence, perhaps both.
- From the initial board, one may converge onto any other position, but any of a set of irreversible changes may compromise this;
the total number of pieces & specifically
Pawns, of each logical colour, can't increase;Pawns can only advance; the difference in the ranks of all pieces of each logical colour, which can only be reduced through promotion of aPawn; castling can't be undone. This function only assesses this final change. - CAVEAT: since the potential of one position to converge on another, depends on a wider set of criteria, this function can only be definitive regarding when convergence is impossible, rather than when is possible.
- CAVEAT: this function depends on one side having lost the right to castle, when the other side already has; this is quite rare.