我要实现的功能从tictactoe游戏返回了最佳动作,该游戏输入了返回(GameState-> Player-> Option(Move)* int-> Move)类型的函数
基本上,我需要获取定义为
的值“ Move”type Move =
{ Row:int; Col:int }
type Player = Nought | Cross
type GameState =
{ Turn: Option<Player>; Size:int; board:Map<int*int, Option<Player>> }
作为输入函数之一返回的元组为(Some(Move类型的最佳移动),与该移动相关联的分数(整数))
我认为这会起作用
match (MiniMax game.board game.Turn) with
| (Some({Row = x; Col = y;}), _) -> {Row=x Col=y}
| (None, _) ->
但是我收到一条错误消息: “该表达式的类型应为'GameState-> Player-> Option(Move)* int' 但这里输入a * b'“
如何匹配(MiniMaxResult:Option(Move)* int)的结果,所以我只能提取Move类型?
两名选手;零或交叉 和游戏状态;包含有关董事会行动,规模,轮到谁的信息
答案 0 :(得分:0)
因此,我在您的代码中看到的第一件事是由于partial application而失败。您的模式匹配期望Option<Move>*int
,但是您的MinMaxGenerator
返回则返回GameState -> Player -> Option<Move>*int
。因此,您必须传递一个类型为GameState
的参数和一个类型为Player
的参数,以返回期望的结果。不确定这是否是唯一的问题。