我正在尝试创建一个函数数组,我在 List.reduce HOF 中使用它。我曾经有一个
let minimax = [| (min : int->int->int); max |]
效果很好,但是现在我想获得列表的最大值,所以我想:
let minimax = [|List.min; List.max|]
但是,这会引发以下错误:
Minimax.fs(175,5):错误 FS0030:值限制。值 'minimax' 已被推断为具有通用类型 val minimax : ('_a list -> '_a) [] when '_a :
compare 将 'minimax' 定义为一个简单的数据项,使其成为具有显式参数的函数或,如果您不打算让它成为通用的,请添加类型注释。
我添加了这样的类型注释:
let minimax = [|(List.min:TreeOfPosition list -> TreeOfPosition); List.max|]
并编译。现在的问题在于 List.reduce,
| BranchP(position, children) -> List.reduce (minimax.[minOrmax]) (List.map (loop (1 - minOrmax)) children)
类型不匹配。期望 TreeOfPosition -> TreeOfPosition -> TreeOfPosition 但给定 TreeOfPosition 列表 -> TreeOfPosition “TreeOfPosition”类型与“TreeOfPosition 列表”类型不匹配
感谢您的任何提示,
佩德罗·杜索