【发布时间】:2019-04-23 04:04:24
【问题描述】:
我正在尝试实现的函数从 tictactoe 游戏返回一个最佳移动,该游戏输入一个返回类型为 (GameState -> Player -> Option (Move) * int -> 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 类型??
两个玩家;零或交叉 和游戏状态;包含有关棋盘动作、大小、轮到谁的信息
【问题讨论】:
-
需要更多上下文,因为您提供的代码中没有提及
GameState和Player类型,但错误消息中有 -
更新帖子,错误信息在第一个匹配模式上..
-
很抱歉再次询问您,但乍一看,该错误消息在我看来就像某些函数需要另一种类型或缺少显式类型注释。您能否提供
MiniMax函数的代码
标签: types f# pattern-matching