Я пытаюсь создать массив функций, который я использую внутри 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) [] когда '_a: сравнение
Либо определите' 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 list»
Спасибо за любой совет,
Pedro Dusso