有没有适用于.NET的函数式编程库?

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

17

7

你看过F#了吗?

同时一个不错的博客文章在这里,讲解如何使用内置于C# 3.0的新泛型/lambda表达式。

如果你只是在源文件顶部添加using System.Linq,就会有很多很好的新函数,可以用来处理集合,比如折叠/过滤等等。


5

2

2
我认为你想要 F#
此外,较新的 C# 版本在基础语言中包含了许多函数式概念。

2

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社区中其他人给予的支持和鼓励。

2
并非一个完整的封装库,但微软的Luca Bolognese在一系列博客文章中构建了一个C#函数式编程库,其中包括元组、记录、类型联合等类型。
此外,Linq基本上是一个函数式编程库,在C#中具有语法支持。

0

还有一个值得考虑的选择是FuncSharp。它不像LanguageExt那样沉重,但确实涵盖了最重要的模式/方面。


0

F#,微软发布了CTP版本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接