如何使用类型推断解决此问题?
open Microsoft.FSharp.Linq.RuntimeHelpers
open System
open System.Linq.Expressions
open Accord.Math.Optimization
module Vector=
let compareScalarProcut(a:double[])(b:double[])(greaterOrEqualThen:float)=
Array.map2 (*) a b
|> Array.sum
|> fun x-> x >= greaterOrEqualThen
module Lambda =
let toExpression (``f# lambda`` : Quotations.Expr<'a>) =
``f# lambda``
|> LeafExpressionConverter.QuotationToExpression
|> unbox<Expression<'a>>
let LambdaExpression (coefficients:double[]) =
<@ Func<double[], bool>(fun i -> (Vector.compareScalarProcut(i,coefficients,0)) @>
|> Lambda.toExpression
Run Code Online (Sandbox Code Playgroud)
你错误地调用了你的函数.它是一个"普通"的F#函数,它接受由空格分隔的参数,而不是用逗号分隔的参数元组.试试这个:
Vector.compareScalarProcut i coefficients 0.0
Run Code Online (Sandbox Code Playgroud)