f# – 从C#调用部分应用的函数

f# – 从C#调用部分应用的函数,第1张

概述我有一个通用函数,需要很多参数 f : a -> b -> c -> d -> e -> f 我想提供仅采用最后两个参数的专用函数,但为前三个参数提供一些固定值. g : d -> e -> fh : d -> e -> f 它们的实现类似于以下内容 g = f someA someB someCh = f someA' someB' someC' 这当然很棒,但是当从C#调用这些函数时,这是 我有一个通用函数,需要很多参数

f : a -> b -> c -> d -> e -> f

我想提供仅采用最后两个参数的专用函数,但为前三个参数提供一些固定值.

g : d -> e -> fh : d -> e -> f

它们的实现类似于以下内容

g = f someA someB someCh = f someA' someB' someC'

这当然很棒,但是当从C#调用这些函数时,这是一个问题,因为它们的类型不会被“美化”.相反,我得到了一堆嵌套的FSharpFuncs.
我可以通过定义我的函数来避免这个问题

g d e = f someA someB someC d eh d e = f someA' someB' someC' d e

但这似乎是一个非常简单的机械转换,所以我想知道是否有一种自动获得相同结果的方法.也许我可以附加一些属性?

解决方法 从技术上讲,如何编写g和h的第一个和第二个选项并不完全相同.在第一种情况下,f应用于三个参数,并且得到的新函数作为对象存储在值g中.

而在第二种情况下,函数f每次调用所有5个参数,其中someA,someB和someC的值在调用g时传递.

对于大多数情况,这种区别并不是真正相关,但是当您想要缓存计算的某些部分时,它就变得很重要.

长话短说:转换有轻微的语义差异,因此无法真正自动完成.只需将参数添加到新g和h即可.

总结

以上是内存溢出为你收集整理的f# – 从C#调用部分应用的函数全部内容,希望文章能够帮你解决f# – 从C#调用部分应用的函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1231338.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存