bishbosh-0.1.4.0: Plays chess.
Safe HaskellNone
LanguageHaskell2010

BishBosh.Input.PieceSquareTable

Description

AUTHOR
Dr. Alistair Ward
DESCRIPTION
  • Defines the value for each type of piece, of occupying different squares.
  • This module is used to parse the user's configuration, which may involve reflecting their configuration to generate values for the RHS of the board.
  • This metric includes aspects of both control of the centre, & material advantage, in that a side's score can increase either by occupying squares of greater value, or simply by having more pieces.
  • N.B.: the evaluation of fitness by material COULD be entirely built into these tables, so that the average value for a Queen is ~9 times that for a Pawn, but under these circumstances a non-zero material value for a King must be arbitrarily chosen.
  • N.B. The normal & end-game phases are typically represented by independent instances. CAVEAT: any normalisation is performed on each of these instances independently, using their respective minimum & maximum values, rather than using the global minimum & maximum.
Synopsis

Types

Type-synonyms

type IOFormat = Double Source #

The format of the values when read or written.

type Assocs rank pieceSquareValue = [(rank, [pieceSquareValue])] Source #

Type-synonym.

Data-types

Constants

tag :: String Source #

Used to qualify XML.

reflectOnYTag :: String Source #

Used to qualify XML.

Functions

normaliseToUnitInterval :: (Fractional pieceSquareValueIn, Real pieceSquareValueIn, Fractional pieceSquareValueOut) => Assocs rank pieceSquareValueIn -> Assocs rank pieceSquareValueOut Source #

Map the range of values onto the Closed Unit Interval.

mirror :: Show pieceSquareValue => [pieceSquareValue] -> [pieceSquareValue] Source #

Generates a mirror-symmetric RHS, to build a complete description.

unmirror :: Show pieceSquareValue => [pieceSquareValue] -> [pieceSquareValue] Source #

Removes the mirror-symmetric RHS, for a concise description.

Accessors

findUndefinedRanks :: PieceSquareTable -> Set Rank Source #

Identify any rank lacking a definition.

findPieceSquareValueByCoordinates :: Rank -> PieceSquareTable -> Maybe PieceSquareValueByCoordinates Source #

Lookup the values for all coordinates, corresponding to the specified rank.

Constructors

mkPieceSquareTable Source #

Arguments

:: Normalise

Whether to normalise the specified values into the closed unit interval.

-> ReflectOnY

Whether values for the RHS of the board are inferred by reflection about the y-axis.

-> Assocs Rank Base 
-> PieceSquareTable 

Smart constructor.

Predicates