我喜欢在我的舒适区之外学习语言,但我很难找到一个可以开始使用函数式语言的地方。我听到很多关于Structure and Interpretations of Computer Programs的好东西,但是当我几年前试图读完它时,它似乎只是在我头上。我用书比网站更好,但当我访问当地书店时,LISP上的书看起来有些可怕。
那么什么是一个好的起点?我的目标是能够使用函数式编程语言在6个月左右的时间内解决简单问题,并能够转向更高级的主题,识别何时函数式语言是正确的工具,并使用该语言在2 - 3年的过程中解决更多的问题。我喜欢那些在例子上很重要的书籍,但也包括要完成的挑战。功能语言是否存在这样的事情?
答案 0 :(得分:30)
The Little Schemer教授递归非常好,而且阅读起来既有趣又简单。
我还希望The Scheme Programming Language更广泛地介绍该语言。
答案 1 :(得分:21)
试试Real World Haskell。它是免费在线的。
答案 2 :(得分:16)
SICP是一本很棒的书。
这可能是我的偏见,但我认为ocaml很容易进入。您可以选择以几种不同的风格进行编程,直到您完全舒服为止。我对Haskell和Ocaml的posted a bunch of links引用了是的书籍,其中有一些例子似乎就在你的小巷里。
如果您更喜欢Lisp,您可以尝试通过99-problems in Lisp(您可以使用任何语言进行操作),或者您可以从编写SICP的人那里观看lectures。< / p>
在未来的道路上,抓住“Purely Functional Data Structures”,因为它将进入硬核深层设计,并考虑到功能语言中必须考虑的因素 - 它使用ML(其中) ocaml源自)。
答案 3 :(得分:11)
我真的推荐Paul Graham的“On Lisp”。
即使对于函数式编程的初学者来说,它也简洁且易读(就像我读它时一样)。它包含很多非常简短的例子,每个例子都有助于理解一件事。
我经常想读这本书:这只是包含我在其他(非功能性)语言中想要的功能的语言,但从来没有。 :-( 这正是学习它的书,总是易于理解,有时甚至是有趣的!
您可以the author's site免费获得
答案 4 :(得分:5)
我非常喜欢Thompson的“Haskell:功能编程工艺”,因为它编写得很好,Haskell比其他函数语言更容易启动,而且完全纯粹(不像Lisp或Scheme)。
答案 5 :(得分:5)
由于存在许多不同的函数式编程语言,因此很难推荐书籍。但是如果你对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本人,但它编写得很好,有很好的解释和例子,还有很多练习可供使用。它在计划人群中似乎很受欢迎。
答案 6 :(得分:5)
Schemers Guide和相关软件 - 非常好的东西
答案 7 :(得分:5)
结帐Introduction to functional programming。它提供了不同的视角。
答案 8 :(得分:4)
我发现The Little Schemer是函数式编程的一个很棒的,很棒的介绍。它完全基于简单,一口大小的例子,这些例子是随着本书的继续而构建的。
答案 9 :(得分:4)
我从Jeffrey Ullman的 ML编程元素中学到了很多东西。当OCaml,F#和Haskell(看似)更受欢迎时,它会失去关于标准ML的分数。
答案 10 :(得分:4)
我觉得Chris Okasaki 纯功能数据结构值得一看。
答案 11 :(得分:2)
Haskell是一种非常好的初学者函数式编程语言。有人问过Haskell的好资源,所以我会指出你there。
如果您正在寻找一本关于功能编程的好书,我会推荐Bruce J. Maclennan撰写的“功能编程:实践与理论”。
但是,在阅读之前,您需要先了解Set Theory和Logic。它包括LISP,Haskell和其他语言的例子。
答案 12 :(得分:1)
如果您有使用.NET的经验,Expert #F是好的。
F#源自OCaml。 Lisp比函数式语言更纯粹。
答案 13 :(得分:1)
Real-World Functional Programming(在F#和C#中有示例)
答案 14 :(得分:0)
我听过关于Haskell Functional Programming的好消息,但我也发现这些list亚马逊的函数式编程书可能对你有所帮助。