有没有人有任何启动function编程的build议?

我正在寻找一些电子书,这将有助于我学习函数式编程。 我还没有决定使用哪种语言,但是我注意到了在StackOverflow社区中对LISP,Haskell和F#的相当多的偏见。 到目前为止,我还不确定我将采取哪个方向,但任何人都可以推荐关于这个主题的任何特定的电子书? 另外,如果任何人都可以提出一个引人注目的论证,哪种function语言是最有趣的,那么我会很乐意听到你的意见。

我特别感兴趣的电子书,因为我设法给自己索尼电子书圣诞节电子书阅读器,我正在寻找加载与有用的材料为我的永无止境的追求成为一个更好的程序员。

我推荐Haskell 。 请看看这个其他的SO问题: Haskell入门 。

有利于Haskell的理由:

  • 首先从个人angular度出发:我花了相当多的编程时间来思考devise自己的编程语言。 (例如,我强烈推荐教程“ 编程语言语用学” 。)当我第一次遇到Haskell时,我意识到它包含了我所拥有的许多想法以及更多的方法,并且都比我自己做得更好。
  • 这是function理想的非常纯粹的实现:懒惰(非严格)和(多态)静态types。 无副作用!
  • 它的types系统可能会改变你对types系统的看法。 (Hindley-Milnertypes推断是惊人的。)
  • 它的面向对象编程和多态的另一种观点是伟大的。

Lisp也是一个不错的select。 支持Lisp变体的原因:

  • 历史上第一个函数式编程语言(或第一个巨大的语言)。
  • 世界观“一切都是列表”是非常简约,简单,美丽。

如果你确实select了一个Lisp变种,我推荐Scheme 。

我没有使用OCaml或Ruby,但我的一些朋友发誓,虽然可以争论他们是如何function。 另一方面,他们的“多范式”性质使他们在实践中非常方便。

总而言之,我build议你select一个遵循Alan Perlis的build议的语言:“一种不会影响你对编程思维方式的语言是不值得的。 Lisp和Haskell都改变了我的世界。 我希望不pipe你select哪种语言,它都会改变你的世界。

我刚开始学习计算机程序的结构和解释video讲座,我觉得他们很棒。 他们采用LISP的变体Scheme作为编程语言。 但这不是课程的重点:它是关于“计算”的整个概念及其含义。

function编程最好的教程之一(朋友给了我)是学习你一个好主意的Haskell! 。 这个教程是关于Haskell的,但是基本的东西有很好的正确顺序。 我发现它非常清楚。

显然,这取决于。

你熟悉C#和.Net框架吗? 如果这样的话,会给你一个启动使用F#。 如果你有Visual Studio,你也可以用F#来玩,所以这又是一个学习曲线。

这也取决于你是否只是在寻找function性程序devise来扩大你的视野,或者实际上使用它。 如果你只是开玩笑,然后从任何地方开始,但如果你打算使用它,那么select一个与你现有的框架兼容的东西。

我2美分/便士

我正在阅读的另一个Haskell教程 ,这是一个非常有用和写得很好的Haskell书。

实用,Common Lisp是一个非常棒的电子书,如果你有兴趣潜入Lisp。 和其他很多语言完全不一样,但我觉得自己要学习这是我编程生涯中最有意义的经历之一。 有限的语法使得高度灵活的语言相对容易学习,但从概念上讲,需要花费一些时间来思考。

也许有一个select是拉下真实世界Haskell的整个在线版本?

这是一本学习Haskell的好书,但可以说它可能需要与一本关于函数式编程的更通用的书籍搭配。

我会推荐任何一种语言的ML(标准ML或OCaml都是好的)方言。

他们对Haskell产生了巨大的影响,并且比Haskell对FP的介绍更为温和。

我会从Lisp(特别是Scheme)开始,因为它很简单; 它有一个非常简单的语法和没有静态types系统担心。

计算机程序的结构和解释不仅会向你介绍Scheme,还会教你所有主要的编程范例。 全文可以在Creative Commons许可下获得。

之后,您将可以更轻松地学习Haskell的额外function,即更精细的语法,懒惰的评估和强大的types系统。

“如何devise程序”: http : //www.htdp.org/

顺便说一句,你的目标是什么?

我跳你selectErlang或Lisp。 (第四)在那里,你有我所知道的最有意思的语言。

Erlang,Lisp和Forth之后我应该去哪里,请留下评论。

我会去“Clojure的欢乐”。

我认为你已经知道Java。 Clojure运行在JVM上,是纯粹的function(除了less数例外,这是为了方便并发编程)并且是一个lisp。 它具有上面提到的lisp的所有优点(呃…从不介意的尾部调用优化),具有与Java兼容,高级持久数据结构和大型活跃社区等一些巨大优势。 如果你想学习一些你可能有一天有机会与专业合作的东西,那就去Clojure(或者F#,如果你能忍受的话)。

http://www.manning.com/fogus/

我可能会为此付出代价,但是我会说Ruby。 这是一个非常好的和现代的混合functionOO语言,它将轻轻地向您介绍函数式编程的世界。 或者任何其他具有闭包和高阶函数的语言(它必须是dynamictypes或types推断,否则真的很难编写function代码)。

一旦你对Ruby FP感到满意,或者如果你不想听我最好的build议,可以尝试类似Scheme的东西。 这是一种优雅和温和的语言。

如果您从Common Lisp或Ocaml或Erlang或特别是Haskell开始,您将很可能会因为各种原因而感到害怕,并且会感到迷茫。 如果你对Scheme感到满意,你可能会想尝试一下,但是我真的会build议不要从这个开始。 很less有人走这条路。

我绝不是这方面的专家,但是我个人认为从scheme开始可能是一个好主意。 据我所知,scheme是LISP的一个简化版本,把它看作是LISP,但是只有最基本的东西。 我认为scheme的语法是非常纯粹的,你必须通过括号,但它确实帮助我进入函数式编程的“感觉”,而不必学习语言特征的gobs。

两本好书:

“计算机程序的结构和解释”(由Abelson&Sussman撰写)和“计算机程序devise的概念,技术和模型”(由Peter Van Roy和Seif Haridi撰写)。

两者都只涵盖function性程序devise。

我将第二个真实世界的Haskell,并添加:“ Haskell:function编程的工艺 ”。

我真的发现了Haskell的味道 。 这是西蒙·佩顿·琼斯(Simon Peyton Jones)的一次演讲。 这是一个非常好的概述,首先看看面向非FP编程人员的语言。

谈话的第2部分和幻灯片的PDF 。 相机从不显示幻灯片,所以PDF真的有帮助。

Lisp是唯一以正则语法为核心和明确定义的标准(在CL和Scheme的情况下)。 他们弥补了一个启发性的旅程。

我推荐Common Lisp。

有好的和免费的初学者的书,检查出拉姆金斯的“成功的Lisp”和Seibel的“实用的共同的Lisp”:

对于从命令式编程过渡,我会build议克里斯·史密斯编程F# 。 第二,A. Rex评论上面关于Haskell 资源和其他成员关于SICP 。