goatee-0.4.0: A monadic take on a 2,500-year-old board game - library.
Safe HaskellNone
LanguageHaskell2010

Game.Goatee.Lib.Tree

Description

SGF data structures modelling the hierarchical game tree.

Synopsis

Documentation

data Collection Source #

An SGF collection of game trees.

Constructors

Collection 

Fields

Instances

Instances details
Show Collection Source # 
Instance details

Defined in Game.Goatee.Lib.Tree

data Node Source #

An SGF game tree node. Unlike in the SGF spec, we represent a game tree with nodes uniformly, rather than having the separation between sequences and nodes.

Constructors

Node 

Instances

Instances details
Show Node Source # 
Instance details

Defined in Game.Goatee.Lib.Tree

Methods

showsPrec :: Int -> Node -> ShowS #

show :: Node -> String #

showList :: [Node] -> ShowS #

newtype NodeWithDeepEquality Source #

A wrapper around Node with an Eq instance that considers two nodes equal iff they contain the same properties (not necessarily in the same order), and if they contain children (in the same order) whose nodes are recursively equal.

This instance is not on Node directly because it is not the only obvious sense of equality (only comparing properties would be another one), and it's also potentially expensive.

emptyNode :: Node Source #

A node with no properties and no children.

rootNode :: Maybe (Int, Int) -> Node Source #

Returns a fresh root Node with AP set to Goatee and optionally with a board size set via SZ.

findProperty :: Descriptor a => a -> Node -> Maybe Property Source #

Searches for a matching property in a node's property list.

findProperty' :: Descriptor a => a -> [Property] -> Maybe Property Source #

Searches for a matching property in a property list.

findPropertyValue :: ValuedDescriptor v a => a -> Node -> Maybe v Source #

Retrieves the value of a property in a node's property list.

findPropertyValue' :: ValuedDescriptor v a => a -> [Property] -> Maybe v Source #

Retrieves the value of a property in a property list.

addProperty :: Property -> Node -> Node Source #

Appends a property to a node's property list.

addChild :: Node -> Node -> Node Source #

addChild child parent appends a child node to a node's child list.

addChildAt :: Int -> Node -> Node -> Node Source #

addChildAt index child parent inserts a child node into a node's child list at the given index, shifting all nodes at or after the given index to the right. If the position is less than 0 or greater than the length of the list, then the index is clamped to this range.

deleteChildAt :: Int -> Node -> Node Source #

deleteChildAt index node deletes the child at the given index from the node. If the index is invalid, node is returned.

validateNode :: Bool -> Bool -> Node -> [String] Source #

Returns a list of validation errors for the current node, an empty list if no errors are detected.