例如,在 Java 中有 Functional Java 和 Higher-Order Java。这两个库本质上都提供了一个小型API,用于操作高阶、柯里化函数以及一些新的数据类型(元组、不可变列表)。
你看过F#了吗? 同时一个不错的博客文章在这里,讲解如何使用内置于C# 3.0的新泛型/lambda表达式。 如果你只是在源文件顶部添加using System.Linq,就会有很多很好的新函数,可以用来处理集合,比如折叠/过滤等等。
假设由于某种原因您无法使用F#,只想在C#代码中使用函数式范例和习语以提高质量和可靠性:功能样式模式匹配C#:Functional style pattern matching for C# C# / .Net的Monad库:Monad library for C#/.Net 还有“elevate”,其中包含一些函数式内容,如选项类型(可能等)等:'elevate'
可能有C#的库可以使用,但是建议考虑使用F# http://research.microsoft.com/fsharp/fsharp.aspx 和 http://msdn.microsoft.com/en-us/fsharp/default.aspx。微软计划将F#作为Visual Studio中的一流语言,因此使用CTPs之一来构建您的初始项目应该没有太大风险。
如果你正在寻找扩展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社区中其他人给予的支持和鼓励。
并非一个完整的封装库,但微软的Luca Bolognese在一系列博客文章中构建了一个C#函数式编程库,其中包括元组、记录、类型联合等类型。此外,Linq基本上是一个函数式编程库,在C#中具有语法支持。