9

我现在已经学习 F# 几个月了,学习F#的最大资产是将John Harrison的“实用逻辑和自动推理手册”(WorldCat )中的OCaml代码翻译成 F#。

由于这是一种如此有效的学习方法,我计划将更多书籍中的代码翻译成 F#,但书籍主要侧重于功能概念现实世界应用程序,这些应用程序通常以使用诸如AI编译器定理证明器等功能语言编写而闻名推理助理

虽然人们会认为将程序从一种语言翻译成另一种语言可能是一项微不足道的任务,但实际上,在进行这种翻译时,不仅会遇到语言差异,而且还必须学习和理解进行翻译的环境和工具。需要探索两种语言及其环境的深度,而这些深度在阅读时通常不会被考虑在内。例如,在将 Ocaml 转换为 F# 时,我学习了顶级ocamldebug和时间旅行、跟踪和希望 F# 有这个、camlp4以及它在 F# 中不存在的原因、异常处理性能差异类型推断以某种方式迫使我以一种我无法通过仅用 F# 进行试验或阅读书籍来理解 F# 对应物的方式。

您是否知道任何其他使用/包含源代码的书籍,最好是函数式,涵盖函数式编程的概念,或者是通常用函数式语言编写的现实世界应用程序,并且通过翻译源代码有助于学习函数式编程到F#?

为了保持客观而不是主观,答案必须解释为什么它很重要,并且您必须使用过这本书而不仅仅是浏览过这本书。我正在寻找那些从事函数式编程多年的人的答案,他们发现通读这本书是他们在函数式编程方面取得成功的关键。答案示例:

编辑

虽然我想推迟并等待一个更好的答案来接受,但我了解到,在 SO 上几天后,观点大大减少了。

我发现这两个答案对于不熟悉这些书籍的人来说都很棒,如果我还不知道并拥有大多数书籍的副本,我会认真考虑购买它们。

由于 PAD 注意到我所追求的更高级的书籍,我给了他接受投票。如果可以分开接受我会的。

4

2 回答 2

8

你的名单对我来说看起来很可怕。我建议一些更基本的:

  1. Okasaki 的纯函数式数据结构书。本书使用 SML 符号;由于缺乏函子,将其示例翻译成 F# 具有挑战性。但好处是巨大的;在这个过程中你会学到很多东西,另一方面也会极大地帮助 F# 社区。正如@Jack P. 所提到的,其中许多数据结构已被移植到 F#;他们对你来说可能是一个很好的开始。

  2. ML for the Working Programmer by Paulson。我特别喜欢使用归纳法来证明程序正确性的部分。书中的一些重要示例,例如为lambda 演算编写解释器战术定理证明器,很有趣,并且与您感兴趣的领域很接近。

  3. Hudak的哈斯克尔表达学院。这本书会给你非常有趣的时间和成就感,因为你用真实的和令人兴奋的应用程序完成了它。此外,书中还有很多关于设计 DSL 的有用信息。

我真的很佩服你通过反复试验过程学习 F# 的坚持。如果你能在约翰哈里森的书之后幸存下来,我认为很少有人会对你有挑战性。我建议您使用另一种函数式语言找到一个真正的应用程序,我们在 F# 中没有这种应用程序并将其移植。例如,从书中的例子来看,用 F# 编写一个类似于CoqIsabelleHol-light的简单证明助手还不是很远。

于 2012-09-30T18:02:59.370 回答
3

考虑到您的问题中列出的标题,您已经远远领先于基础知识。但谈到基本面,我建议考虑:

Richard Bird,Philip Wadler - 函数式编程简介,第一版 ISBN:0134841891(本书的 FP 语言是 Miranda)

和历久弥新的经典

Harold Abelson 和 Gerald Jay Sussman - Structure and Interpretation of Computer Programs,第 2 版 ISBN:0262011530(本书的 FP 语言是 Scheme)

于 2012-09-30T17:30:26.897 回答