F# 如何将F(double->double)转换为Func?

F# 如何将F(double->double)转换为Func?,f#,math.net,mathnet-numerics,F#,Math.net,Mathnet Numerics,我正在使用MathNet.Numerics.LinearAlgebra构建一个库。我需要对矩阵的每个元素应用用户指定的函数,我知道我可以使用Map: 在m2的行中,我得到以下错误: This expression was expected to have type Func<float, 'a> but here has type double -> double 但是我需要能够传入映射函数,而不是像m3那样内联定义它。MathNet.Numerics的文档似乎没有回答我的问

我正在使用MathNet.Numerics.LinearAlgebra构建一个库。我需要对矩阵的每个元素应用用户指定的函数,我知道我可以使用Map:

在m2的行中,我得到以下错误:

This expression was expected to have type Func<float, 'a> but here has type double -> double

但是我需要能够传入映射函数,而不是像m3那样内联定义它。MathNet.Numerics的文档似乎没有回答我的问题。

您可以这样构造委托:

let m2 = m1.Map (Func<_, _> f1)

F在某些情况下隐式构造委托,如问题中的lambda所示,但它并不总是无缝的。有关更多信息,请参见。

可以这样构造委托:

let m2 = m1.Map (Func<_, _> f1)

F在某些情况下隐式构造委托,如问题中的lambda所示,但它并不总是无缝的。有关更多信息,请参阅。

F extensions MathNet.Numerics.FSharp包通常提供一个可以处理普通F函数的变体。在这种情况下,您可以编写:

let m2 = m1 |> Matrix.map f1

F extensions MathNet.Numerics.FSharp包通常提供一个可以处理普通F函数的变量。在这种情况下,您可以编写:

let m2 = m1 |> Matrix.map f1

非常感谢你。这将与我使用的其他映射方法(如List.map等)相匹配。非常感谢。这将与我使用的其他映射方法(如List.map等)相匹配。