gpt4 book ai didi

f# - 如何从 C# 应用程序将 F# 函数传递给另一个 F# 函数?

转载 作者:行者123 更新时间:2023-12-01 01:16:24 26 4
gpt4 key购买 nike

我有 F# 类库程序集,其中包含两个函数:

let add a b = a + b


let rec aggregateList list init (op:int -> int -> int) =
match list with
|[] -> init
|head::tail ->
let rest = aggregateList tail init op
op rest head

我有一个 C# 控制台应用程序,它引用 F# 库并尝试执行以下操作:
FSharpList<int> l = new FSharpList<int>(1, new FSharpList<int>(2, FSharpList<int>.Empty));
int result = myFsLibrary.aggregateList(l, 0, myFsLibrary.add);

但是,编译器提示 [myFsLibrary.add] 无法从“方法组”转换为 FSharpFunc<int, FSharpFunc<int, int>>

最佳答案

其他人已经提供了答案,但我只是介入说你不应该这样做。

不要将 F# 列表暴露给 C#。不要将 curried 函数暴露给 C#。阻抗不匹配在此边界处可见,因此最好在跨语言汇编边界处公开通用框架类型。看

http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/manual/fsharp-component-design-guidelines.pdf

获取更多建议。

关于f# - 如何从 C# 应用程序将 F# 函数传递给另一个 F# 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035255/

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