úÎC=ªF      !"#$%&'()*+,-./0123456789:;<=>?@AB C D E   A player. FG/Returns whether or not the player is player 1. /Returns whether or not the player is player 2.  Player 1.  Player 2. Folds a player.  If player 1.  If player 2. The player to fold. ;Switches a player from player 1 to player 2 or vice versa. The player to alternate. 1Returns a character symbol denoting each player.  A game result. HI Fold a game result. If either of the players won. If the game was a draw. The game result to fold. Fold a game result. If player 1 won. If player 2 won. If the game was a draw. The game result to fold. 9Construct a game result with a win for the given player. The player to win. 1Construct a game result with a win for player 1. 1Construct a game result with a win for player 2. (Construct a game result that is a draw. 9Returns whether or not player 1 won for the game result. 9Returns whether or not player 2 won for the game result. +Returns whether the game result is a draw.      JKLMNO South-east (bottom right). South (bottom centre). South-west (bottom left). East (middle right) Centre. West (middle left). North-east (top right). North (top centre). North-west (top left).     !P ! ! !)"BFunctions that work on boards that are in play or have completed. hThis class specifically does not specify moving on a board, since this is illegal on a completed board. #1Returns whose turn it is on a tic-tac-toe board. $5Returns whose turn it is not on a tic-tac-toe board. %+Returns whether or not the board is empty. &%Returns positions that are occupied. '3Returns the number of moves that have been played. (WReturns whether or not the first given board can transition to the second given board. )lReturns whether or not the first given board can transition to the second given board and they are inequal. **Returns the player at the given position. +?Returns the player at the given position or the given default. ,DReturns whether or not the given position is occupied on the board. true if occupied. -DReturns whether or not the given position is occupied on the board. false if occupied. .HPrints the board to standard output using an ASCII grid representation. /UA finished board is a completed tic-tac-toe game and does not accept any more moves. Q0A tic-tac-toe board. R1ST2344The result of making a move on a tic-tac-toe board. U-The move was valid and the game is complete. V4The move was valid and the board is in a new state. WAThe move was to a position that is already occupied by a player. 567X89Deconstruct a move result. AThe move was to a position that is already occupied by a player. 4The move was valid and the board is in a new state. -The move was valid and the game is complete. :JReturn the value after function application to the board to keep playing. ?The value to return if there is no board to keep playing with. 7A function to apply to the board to keep playing with. ;eReturn the possible board from a move result. A board is returned if the result is to continue play. <=>3Return the result of a completed tic-tac-toe game. ?"Start an empty tic-tac-toe board. @`Prints out a board using ASCII notation and substituting the returned string for each position. ?The function returning the string to substitute each position. YZ"#$%&'()*+,-./0123456789:;<=>?@70/?>56849:;231<="#$%&'()*+,-.@" #$%&'()*+,-.#$%&'()*+,-./012334566789:;<=>?@ A Play tic-tac-toe interactively. [\]^_`abcdeAAA BCfghBCBCBC DEDEDEDE < "#$%&'()*+,-./0123456789:;<=>?@Ai   !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJK  L  MNOPQRSTSUVW9:XYZ[\A]^_`abcdefghi j k lmTicTacToe-0.0.1Data.TicTacToe.PlayerData.TicTacToe.GameResultTest.Data.TicTacToe.PlayerTest.Data.TicTacToe.GameResultData.TicTacToe.PositionTest.Data.TicTacToe.PositionData.TicTacToe.BoardData.TicTacToe.InteractTest.Data.TicTacToe.BoardTest.Data.TicTacToeData.TicTacToePlayer isPlayer1 isPlayer2player1player2player alternatetoSymbol GameResult gameResultplayerGameResultwin player1Wins player2Winsdraw isPlayer1Wins isPlayer2WinsisDrawmain playerTestsgameResultTestsPositionSESSWECWNENNW positionTests BoardLike whoseTurn whoseNotTurnisEmptyoccupiedPositionsmoves isSubboardOfisProperSubboardOfplayerAt playerAtOr isOccupied isNotOccupied printBoard FinishedBoardBoard TakenBackTakeBacktakeBack MoveResultMove--> EmptyBoard-?->foldMoveResult keepPlayingOr keepPlaying foldTakenBacktakenBackBoard getResultemptyprintEachPosition tictactoe boardTeststictactoeTestsPlayer2Player1DrawWinprop_is_exclusiveprop_cata_ctorprop_alternateprop_cata_ctor2prop_isprop_show_is_twoTakeBackIsBoardTakeBackIsEmpty GameFinished KeepPlayingPositionAlreadyOccupiedposshowPositionMapgameLoop tictactoe'surround putStrLnslinenlinesprintWithPositionsprintWithoutPositionsprintPositions fromPosition toPositionprop_whoseTurnprop_move_whoseTurnprop_move_takeBack