如何开始学习函数式编程?

5

在函数式编程如此火热的背景下,对于一名C#程序员来说,入门函数式编程最好的资源是什么?我不是在寻找C# 3.0语言改进。

8个回答

12

自我推销一下:我是Real World Functional Programming的合著者(其实只是一个名义上的编辑 :))。这本书主要面向像您这样的人,涉及编程和函数式编程原理,大部分使用F#进行讲解,并展示了如何在许多情况下应用相同的原则到C#中。

它假设您已经熟悉C#,但会从头开始介绍F#。它会给您足够的F#知识,让您可以尝试实验,但目的是教授函数式思维方式,而不是深入探讨F#语言的每个角落。(换句话说,如果您想要将F#作为生产语言使用,我建议您再找一本书

它还未出版,但您可以通过MEAP计划提前获取。已经有几章可用,更多内容即将推出。


有没有其他资源的建议,直到那本书的最新版本发布? - suhair
如果你喜欢纸质书而不是电子书,那么有两本 Apress F# 书籍可供选择:《Foundations of F#》(Robert Pickering)和《Expert F#》(Don Symes)。 - Jon Skeet
我正在阅读Manning网站上的免费部分,非常有趣,而且写得很好。有一件小事:第16页写着“该代码首先创建一个临时列表来存储所有死亡字符。”- Jon可能需要编辑一下! - Steve Claridge
@Steve:在线内容是在我开始处理之前的 :) 给出反对意见/冒犯性投票者:能否给出理由?这不像是我在一个无关的问题中推销这本书,至少我很诚实... - Jon Skeet
提供自己的产品来获取声望似乎有些垃圾邮件的感觉,无论您是否提供免责声明。这就是为什么我会给您打分,就像我对其他人(Thomas Hansen)所做的一样。这里没有个人恩怨或侮辱,只是我看待问题的方式。 - StingyJack
显示剩余3条评论

11

我认为对于具有.NET背景的C#开发人员来说,进入函数式编程的最佳方式是学习F#。


最终我有足够的动力尝试F#而不是Haskell。谢谢。 - suhair

4

@OJ:添加了一些人认为Python支持函数式编程的参考资料。 - S.Lott
同意,Python并不是一种函数式编程语言,但它确实具有函数式特性。这是一篇旧文章,我很感激S.Lott后来写了一本关于这个主题的书。然而,仍然没有为Python编写的事实上的第三方函数库,我觉得有点令人失望。当然,已经有各种尝试和贡献,但没有像EcmaScript等JS库那样取得成功。 - arcseldon

3

免费在线版本的Real World Haskell 是入门的好方法,价格便宜。

完成几章后,您将能够决定FP是否适合您,以及您是要继续使用Haskell还是转向其他语言。 您甚至可以购买纸质版本(就像我一样)。

您从本书中学到的范例(特别是开头几章),同样适用于其他函数式语言。 (我认为我的Javascript和Groovy受益于学习Haskell)。


2
花些时间了解Lisp或Scheme,因为它们是函数式编程的鼻祖。PLT Scheme是一个很好的Scheme环境,可以用来练手。获取一份The Little Schemer,因为它是介绍Scheme的好材料,可以帮助你快速上手。
一旦你掌握了函数式编程,尝试用函数式方式解决Project Euler问题。

0

我在大学学习了函数式编程,使用的语言是Haskell

在它的主页上,你很可能会找到开始所需的一切 :)

顺便说一句,要看到解决方案需要大量的实践;算法本身并不是每个人都习惯用面向对象、逻辑或过程化语言编写的。


0

我同意Mehrdad Afshari的观点。如果你熟悉C#,那么可以用F#开始函数式编程。它的语法类似于C#中的lambda表达式。


0

到目前为止,我一直很喜欢学习 Haskell,它非常适合初学者。


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