转换System.Func<>到FastFunc<>在F#中

时间:2010-01-02 22:08:48

标签: f# ironpython fastfunc

当与IronPython中的F#库交互时,似乎Python函数对象在传递给接受函数作为参数之一的F#接口时不会自动转换为标准F #FastFunc函数对象。

另一方面,Python函数对象很好地转换为System.Func<>如果界面是其中之一。 也就是说,这不容易从python中调用:

let myFunc (f: float->float) =
   f(3.5)

虽然以下工作完美:

let myFunc2 (f: System.Func<float, float>) =
    f.Invoke(3.5)

所以我的问题是,如果我想能够轻松地提供我的F#函数Python函数对象,是否有某种方法可以转换System.Func&lt;&gt;对象是一个FastFunc对象(能够有一个与IronPython / C#等的瘦接口,但是能够使用提供的函数作为lib中更深层次的常规F#函数)?

谢谢, 里卡德

PS 我没有足够的代表来创建一个新标签,也许有人可以创建一个FastFunc标签,如果你认为合适,可以用它标记这个问题

1 个答案:

答案 0 :(得分:3)

下面:

    In order to convert from the Func delegate to the FastFunc, we use the
 FuncConvertExtensions class in the FSharp.PowerPack.Linq.dll assembly. 

从此网站:http://codebetter.com/blogs/matthew.podwysocki/archive/2008/10/15/functional-c-implementing-async-computations-in-c.aspx