ChessLisp built-in chess types
1) Simple scalar constants (like defconstant, but supplied automatically) for files, ranks, squares, flanks, directions, bi-directions, colors, pieces, men, etc.
2) Special atomic types for the following:
2.1) Move
2.2) Board
2.3) FenPosition (Board plus the FEN scalar set)
2.4) Bitboard
2.5) BBDB (Bitboard database with all locus and attack bitboards)
2.6) Hash (All hash generation is done with internal tables)
2.7) Position (FenPosition + BBDB + move/hash-history + some other stuff)
2.8) PgnTagPair
2.9) Game (list of PgnTagPairs + Position + some other stuff)
2.10) TranspositionTable (allocation and accessing; maybe)
2.11) OpeningBookProxy (does all accessing and decoding; maybe)
2.12) TablebaseProxy (does all accessing and decoding; maybe)
2.13) XboardProxy (does all decoding and encoding; maybe)
3) A comprehensive set of accessor and manipulation functions that access the special atomic types:
3.1) Encoders (map structure to a string)
3.2) Decoders (map string to a structure)
3.3) Exploders (map to defstruct components)
3.4) Imploders (map from defstruct components)
3.5) Move generators (legal moves only)
3.6) Move execute/retract
3.7) Many accessors for retrieval of components
3.8) Many predicates for testing components and conditions
4) A truly glorious pattern/instance engine. Well, maybe.
Essentially, the main idea is to have all the low level work done at the compiled C++ level and not at the Lisp interpretation level.
I hope to have an early beta available by the end of this year. All source is ANSI C++ (needs unsigned long long int support) and should compile on any system with the GNU gcc toolchain using the simple:
g++ -o ChessLisp *.cpp
Well, you could always write your own Makefile if you want.
ChessLisp built-in chess types
Moderator: Ras
