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

Shr*_*roy 1 f# mathnet-numerics math.net

我正在MathNet.Numerics.LinearAlgebra建立一个图书馆.我需要将一个用户指定的函数应用于矩阵的每个元素,我知道我可以使用它Map:

open System
open MathNet.Numerics.LinearAlgebra
open MathNet.Numerics.LinearAlgebra.Double

let m1 = matrix [[1.0; 2.0; 3.0]]
let f1 = fun s -> s * 3.14
let m2 = m1.Map f1 // THIS FAILS
let m3 = m1.Map (fun s -> s * 3.14) // THIS WORKS!
Run Code Online (Sandbox Code Playgroud)

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

This expression was expected to have type Func<float, 'a> but here has type double -> double
Run Code Online (Sandbox Code Playgroud)

但我需要能够传递映射函数,而不是将其定义为内联m3.该文档MathNet.Numerics似乎没有解决我的问题.

在此先感谢您的帮助.

Chr*_*egg 5

F#扩展(MathNet.Numerics.FSharp包)通常提供可以处理普通F#函数的变体.在这种情况下,您可以写:

let m2 = m1 |> Matrix.map f1
Run Code Online (Sandbox Code Playgroud)