.NET 有函数式编程库吗?
-
01-07-2019 - |
其他提示
LanguageExt 的外观 非常 有望使 C# 中的函数式编程变得更加容易。
假设您出于某种原因无法使用 F#,而只想在 C# 代码中使用函数范例和惯用语来提高质量和可靠性:
还有 '提升' 它有一些功能性的东西,比如选项类型(也许)等。
我想你想要 F#
此外,C# 的最新版本在基本语言中包含了许多函数概念。
C# 可能有这样的库,但您可能应该考虑仅使用 F# http://research.microsoft.com/fsharp/fsharp.aspx 和 http://msdn.microsoft.com/en-us/fsharp/default.aspx.
Microsoft 计划使 F# 成为 Visual Studio 中的一流语言,因此使用其中一个 CTP 来构建初始内容应该没有什么风险。
如果您正在寻找扩展 C# 的语言,那么不行,但是 F# 是一种基于 .NET 的函数式语言。来自“关于 F#” 页:
F# 是 .NET Framework 的类型化函数编程语言。它将类型化函数式编程的简洁性、表现力和组合性与 .NET 的运行时支持、库、互操作性、工具和对象模型相结合。F# 源于 ML 语言系列,并且具有与 OCaml 兼容的核心语言,但也借鉴了 C# 和 Haskell。F# 从一开始就被设计为 .NET 上的一等公民,提供与其他 .NET 语言的平滑互操作性。例如,C#和F#可以直接互相调用。这意味着 F# 可以立即访问所有 .NET Framework API,包括 Windows Presentation Foundation 和 DirectX。同样,用 F# 开发的库也可以从其他 .NET 语言中使用。
由于 F# 和 OCaml 共享相似的核心语言,因此某些 OCaml 库和应用程序可以直接交叉编译或进行少量条件编译更改。这提供了将现有 OCaml 代码交叉编译和/或移植到 .NET 的途径,并且还允许程序员在这些语言之间转移技能。该项目的一个主要重点是将类似 OCaml 的语言的范围扩展到传统上不使用它们的领域。在整个项目过程中,F# 的设计者感谢 Xavier Leroy 和 OCaml 社区其他人的支持和鼓励。
本身并不是一个收缩包装的库,但 Microsoft 的 Luca Bolognese 拥有 一系列博客文章 他在其中构建了一个 C# 库,用于使用元组、记录、类型联合等类型进行函数式编程:
此外,Linq 基本上是一个用于函数式编程的库,具有 C# 语法支持。
F#,微软提供了一个 CTP 版本。