14

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

4

10 回答 10

15

LanguageExt 看起来很有希望让 C# 中的函数式编程更容易。

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

于 2016-08-02T20:29:34.940 回答
6

你看过F#吗?

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

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

于 2008-09-17T14:35:33.497 回答
5

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

C# 的功能样式模式匹配

C#/.Net 的 Monad 库

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

于 2009-11-12T10:19:47.247 回答
2

我想你想要F#

此外,最新版本的 C# 在基础语言中包含许多功能概念。

于 2008-09-17T14:31:07.237 回答
2

可能有这样一个 C# 库,但您可能应该考虑只使用 F# http://research.microsoft.com/fsharp/fsharp.aspxhttp://msdn.microsoft.com/en-us/fsharp/default .aspx

Microsoft 计划使 F# 成为 Visual Studio 中的一流语言,因此使用其中一个 CTP 构建初始内容的风险应该很小。

于 2008-09-17T14:33:12.253 回答
2

如果您正在寻找扩展 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 社区中其他人的支持和鼓励。

于 2008-09-17T14:33:58.337 回答
2

本身不是一个收缩包装的库,但 Microsoft 的 Luca Bolognese 有一系列博客文章,他在其中构建了一个用于函数式编程的 C# 库,其中包含元组、记录、类型联合等类型:

此外,Linq 基本上是一个在 C# 中具有语法支持的函数式编程库。

于 2008-09-18T16:12:19.183 回答
2

查看http://code.msdn.microsoft.com/FunctionalCSharp获取一些示例。

于 2009-06-05T15:25:01.567 回答
0

F#,微软提供了一个 CTP 版本。

于 2008-09-17T14:31:29.513 回答
0

另一个要考虑的选择是FuncSharp。它不像 LanguageExt 那么重,它确实涵盖了最重要的模式/方面。

于 2019-12-06T15:22:26.533 回答