gpt4 book ai didi

c# - 从 C# 调用高阶 F# 函数

转载 作者:IT王子 更新时间:2023-10-29 04:41:36 26 4
gpt4 key购买 nike

给定 F# 高阶函数(在参数中获取函数):

let ApplyOn2 (f:int->int) = f(2)  

和 C# 函数

public static int Increment(int a) { return a++; } 

如何调用 ApplyOn2Increment作为参数(来自 C#)?注意 ApplyOn2导出为 Microsoft.FSharp.Core.FSharpFunc<int,int>Increment 不匹配的签名。

最佳答案

要从等效的 C# 函数中获取 FSharpFunc,请使用:

Func<int,int> cs_func = (i) => ++i;
var fsharp_func = Microsoft.FSharp.Core.FSharpFunc<int,int>.FromConverter(
new Converter<int,int>(cs_func));

要从等效的 FSharpFunc 获取 C# 函数,请使用

var cs_func = Microsoft.FSharp.Core.FSharpFunc<int,int>.ToConverter(fsharp_func);
int i = cs_func(2);

因此,在这种特殊情况下,您的代码可能如下所示:

Func<int, int> cs_func = (int i) => ++i;
int result = ApplyOn22(Microsoft.FSharp.Core.FSharpFunc<int, int>.FromConverter(
new Converter<int, int>(cs_func)));

关于c# - 从 C# 调用高阶 F# 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1952114/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com