![]() |
1
2
我不确定这到底是个什么程度的问题。然而,这里有一些典型的模式,我用C来编码这些函数结构(其中一些模式来自我的书,它有一个 source code available )
歧视工会
-在C中实现有区别的联合实际上没有好的方法——您唯一能做的就是将它们实现为类层次结构(其中一个基类表示du类型,每个du案例都有一个派生类)。您也可以添加
模式匹配
-您可能永远不会以一种完全通用的方式(例如,使用嵌套模式)得到这个结果,但是您可以在这样的有区别的联合上模拟模式匹配(使用
不完美,但至少你能找到一种从案例中提取值的相对好的方法。 消息传递 -有 Concurrency and Coordination Runtime ,在某些方面也基于消息传递,可以在C中使用。我打赌您也可以使用C中的F邮箱处理器,使用基于迭代器的技术,我在 this article 也用于Wintelect PowerThreading库。但是,我认为没有人基于这个想法实现了一个可靠的消息传递库。 总之,您可以在C中模拟许多功能特性,至少在某种程度上进行了扩展,并使用一些其他功能而没有任何问题(lambda函数和高阶函数)。然而,如果你需要f的全部力量,那么你只需要说服你的公司开始使用f:-)。 |
![]() |
2
7
使用 F# to make reusable libraries you can call from C# . 关于F一个非常好的地方是它仍然是一种.NET语言。您可以在clr中任意混合和匹配语言… |
![]() |
3
2
虽然类型定义有点冗长(请参见
How can I duplicate the F# discriminated union type in C#?
为了一些想法)。这是我在这个问题上提倡的方法:F型
匹配现在看起来类似于f,但没有大小写标签。相当于此F代码:
这是C代码吗?
|
![]() |
4
0
|
![]() |
Thomas · 使类型别名在F中不可互换# 3 年前 |
![]() |
sdgfsdh · 我该怎么说。使用异步转换函数进行收集? 6 年前 |
![]() |
Soldalma · 我可以实例化包含顶级副作用值的类吗? 7 年前 |
![]() |
matekus · F#-包含数字的字符串的自然排序 7 年前 |
![]() |
matekus · F#类型匹配-无法创建映射或匹配记录 7 年前 |
![]() |
Rob Lyndon · 未找到F#ProvidedTypes文件 7 年前 |
![]() |
red-swan · 如何将intro ML.Net演示翻译为F#? 7 年前 |
![]() |
jkone27 · F#-在编译时从字符串生成简单的空类型 7 年前 |