Func中的F#类型推断<double [],bool>

A19*_*919 3 f#

如何使用类型推断解决此问题?

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)

在此输入图像描述

The*_*Fox 5

你错误地调用了你的函数.它是一个"普通"的F#函数,它接受由空格分隔的参数,而不是用逗号分隔的参数元组.试试这个:

Vector.compareScalarProcut i coefficients 0.0
Run Code Online (Sandbox Code Playgroud)