当与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标签,如果你认为合适,可以用它标记这个问题
答案 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.