关于函数式编程的好的开始文本是啥? [关闭]

Posted

技术标签:

【中文标题】关于函数式编程的好的开始文本是啥? [关闭]【英文标题】:What's a good beginning text on functional programming? [closed]关于函数式编程的好的开始文本是什么? [关闭] 【发布时间】:2010-09-06 14:15:54 【问题描述】:

我喜欢在我的舒适区之外学习语言,但我很难找到开始学习函数式语言的地方。我听说过很多关于Structure and Interpretations of Computer Programs 的好消息,但是当我几年前试图通读它时,它似乎在我脑海中呼啸而过。与网站相比,我在书籍方面做得更好,但是当我访问当地的书店时,LISP 上的书籍看起来有点吓人。

那么什么是一个好的起点?我的目标是能够在 6 个月左右的时间内使用函数式编程语言解决简单的问题,并且能够转向更高级的主题,识别函数式语言何时是适合该工作的工具,并使用该语言在 2-3 年内解决更多问题。我喜欢有大量例子的书,但也包括需要解决的挑战。函数式语言是否存在这种情况?

【问题讨论】:

你当地的书店真的有关于 Lisp 的书吗? 我上周访问的一家电脑书店有“Land of Lisp”、“Practical Common Lisp”和“SICP”... 【参考方案1】:

The Little Schemer 很好地教授递归,而且它有趣且易于阅读。

我还喜欢 The Scheme Programming Language 以更广泛地介绍该语言。

【讨论】:

【参考方案2】:

我发现The Little Schemer 是函数式编程的绝佳介绍。它完全基于简单的、一口大小的示例,这些示例是随着本书的深入而建立的。

【讨论】:

【参考方案3】:

Haskell 是一种非常适合初学者的函数式编程语言。有人问过 Haskell 的好资源,所以我会指出你there。

如果您正在寻找一本关于函数式编程的好书,我会推荐 Bruce J. Maclennan 的《函数式编程:实践与理论》。 但是,在阅读之前,您需要复习一下您的集合论和逻辑。它包括 LISP、Haskell 和其他语言的示例。

【讨论】:

【参考方案4】:

如果您有 .NET 经验,Expert #F 很好。

F# 源自 OCaml。 Lisp 在函数式语言中更加纯粹。

【讨论】:

我认为我不会认为 Lisp 比 OCaml 更纯粹。大多数 Lisp 并没有做任何事情来防止你发生突变。另一方面,OCaml 使得不可能改变变量,除非你将它们声明为可变的。【参考方案5】:

SICP 是一本很棒的书。

这可能是我的偏见,但我认为 ocaml 很容易进入。您可以选择以几种不同的风格进行编程,直到您完全适应为止。我posted a bunch of links Haskell 和 Ocaml 参考了 书籍,其中的示例等等似乎就在你的小巷里。

如果你更喜欢 Lisp,你可以尝试通过99-problems in Lisp(你可以用任何语言,真的),或者你可以观看编写 SICP 的人的lectures。

再往前走,获取“Purely Functional Data Structures”,因为它会进入核心深度设计和函数式语言中必须考虑的因素——它使用机器学习(由 ocaml 派生来自)。

【讨论】:

我现在正在阅读 SICP,但我不确定您在说什么:“拉格朗日”?在我的第二版平装本中,索引中唯一提到拉格朗日的是拉格朗日插值的脚注:www-mitpress.mit.edu/sicp/full-text/book/… 那部分是指 SICM (Structure and Interpretation of Classical Mechanics),我的错。【参考方案6】:

我听说过关于 Haskell Functional Programming 的好消息,但我还在亚马逊上找到了这本 list 的函数式编程书籍,可能对您有所帮助。

【讨论】:

【参考方案7】:

我真的很喜欢 Thompson 的“Haskell:函数式编程的技巧”,因为它写得很好,而且 Haskell 比其他函数式语言更容易上手,同时完全纯粹(不像 Lisp 或 Scheme)。

【讨论】:

+1,这本书也有很多出色的练习,因为它主要是作为教科书编写的。解释和叙述也使这本书成为一个不错的选择。【参考方案8】:

由于有很多不同的函数式编程语言,因此很难推荐书籍。但是,如果您对 Common Lisp 感兴趣,最近我一直在阅读 Peter Seibel 的 "Practical Common Lisp",您可以在将辛苦赚来的现金投入其中之前,先阅读 check out online for free。这是对 CL 的一个非常温和的介绍,有很好的解释和大量的例子。 Seibel 是一位伟大的作家(例如:阅读the story of Mac,)他擅长让您保持参与,我认为这确实是 SICP 失败的地方。简直太干了!但是,虽然 Practical Common Lisp 非常多示例,但它并没有真正需要解决的挑战,尽管示例主要是为了让您继续工作并在它们的基础上进行构建。

另一本好书,这本面向方案的:How to Design Programs。 (Online) 我没有太多时间看这本书,我自己更像是一个 Lisper,而不是一个 Schemer,但它写得很好,有很好的解释和例子,还有很多练习要做。它似乎在 Scheme 人群中很受欢迎。

【讨论】:

【参考方案9】:

我从 Jeffrey Ullman 的 Elements of ML Programming 中学习,非常好。当 OCaml、F# 和 Haskell(似乎)更受欢迎时,它会因为与标准 ML 相关而失分。

【讨论】:

【参考方案10】:

试试Real World Haskell。在线免费。

【讨论】:

【参考方案11】:

计划者指南和相关软件 - 非常好的东西

http://www.schemers.com/tsg.html

【讨论】:

【参考方案12】:

我觉得 Chris Okasaki 的 Purely Functional Data Structures 值得一看。

仅供参考http://www.cs.cmu.edu/~rwh/theses/okasaki.pdf

【讨论】:

【参考方案13】:

我真的推荐 Paul Graham 的“On Lisp”。

即使对于函数式编程的初学者(就像我阅读它时一样),它也很简洁且可读性很强。它包含许多非常简短的示例,每个示例都有助于理解一件事。

我经常想读这本书:这只是一种语言,它包含我曾经想要的其他(非功能性)语言的特性,但从未得到。 :-( 这正是学习它的书,总是易于理解,有时甚至很有趣!

您可以通过the author's site免费获得它!

【讨论】:

【参考方案14】:

查看Introduction to functional programming。它提供了不同的视角。

【讨论】:

【参考方案15】:

Real-World Functional Programming(带有 F# 和 C# 示例)

【讨论】:

以上是关于关于函数式编程的好的开始文本是啥? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

关于函数式编程的思考

第1679其函数式编程浅析

关于函数式编程

你真的理解函数式编程吗?

纯函数式编程中的“价值”是啥?

使用 Language-ext 在 C# 中进行函数式编程 [关闭]