例如,在Java中有 函数式Java高阶 Java. 。两者本质上都提供了一个小型 API,用于操作高阶柯里化函数,或许还有一些新的数据类型(元组、不可变列表)。

有帮助吗?

解决方案

你调查过吗 F#?

还有一篇简洁的博客文章是 这里 讨论如何使用 c# 3.0 中内置的新泛型/lambda 表达式。

如果您只是将 using System.Linq 添加到源文件的顶部,则会添加很多不错的新功能来处理集合,例如折叠/过滤/等。

其他提示

LanguageExt 的外观 非常 有望使 C# 中的函数式编程变得更加容易。

https://github.com/louthy/language-ext

假设您出于某种原因无法使用 F#,而只想在 C# 代码中使用函数范例和惯用语来提高质量和可靠性:

C# 的函数式模式匹配

C#/.Net 的 Monad 库

还有 '提升' 它有一些功能性的东西,比如选项类型(也许)等。

我想你想要 F#

此外,C# 的最新版本在基本语言中包含了许多函数概念。

C# 可能有这样的库,但您可能应该考虑仅使用 F# http://research.microsoft.com/fsharp/fsharp.aspxhttp://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 版本。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top