Самое простое решение - написать Func3
как функцию, которая принимает кортеж.Таким образом, функция будет принимать только один параметр, но вы можете передать ему оба числа:
// Function takeing a single argument, which is a tuple
let Func3 (numOne, numTwo) =
(numOne * numTwo).ToString ()
let test2 = myFunc Func3
// The created function takes a tuple as well
Console.WriteLine(test2(5, 10))
В общем, нет хорошего способа написать функцию высшего порядка, которая принимает функциюпринимая любое количество параметров.Этот вид универсальности не может быть легко закодирован в F #.Вы можете использовать Reflection для создания чего-то подобного (но это было бы неэффективно и небезопасно), или вы могли бы написать более сложное кодирование параметров, но я думаю, что кортеж - лучший вариант.