学习F#:使用其他编程语言的书籍可以翻译成F#来学习功能概念吗?

时间:2012-09-30 16:28:28

标签: f# functional-programming

我现在需要几个月的时间来学习F#学习F#正在翻译约翰哈里森的“OCaml”(Handbook of Practical Logic and Automated Reasoning)中的WorldCat代码,进入F#。

由于这是一种非常有效的学习方法,我计划将更多书籍中的代码翻译为F#,但书籍主要关注functional conceptsreal world applications,通常以使用函数式语言编写而闻名例如AIcompilersTheorem ProversReasoning Assistants

虽然人们会认为将一个程序从一种语言翻译成另一种语言可能是一项微不足道的任务,但实际上,这样做不仅会在语言上产生差异,而且还会产生必须学习和理解的环境和工具的差异。译文。人们需要探索两种语言及其环境的深度,这些语言在阅读时通常不会被考虑。例如,在将Ocaml翻译为F#时,我学习了top-levelocamldebug和时间旅行,trace并希望F#有这个,camlp4以及F#中不存在它, exception handling performance differencestype inference以某种方式强迫我以F#试验或阅读书籍的方式理解F#对应物。

您是否知道任何其他使用/包含源代码的书籍,最好是功能性的,涵盖函数式编程的概念,或者是通常用函数式语言编写的实际应用程序,它们将通过翻译帮助学习函数式编程F#的源代码?

为了保持这个目标而不是主观,答案必须解释为什么它很重要,你必须使用这本书而不仅仅是浏览这本书。我正在寻找多年来一直从事函数式编程的人的答案,并且已经找到了通过这样一本书来完成函数式编程的关键。 答案的例子:

修改

虽然我想推迟并等待接受更好的答案,但我已经了解到,在过了几天之后,这些观点大大减少了。

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

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

2 个答案:

答案 0 :(得分:7)

你列出的对我来说太可怕了。我建议一些更基本的:

  1. Purely functional data structures由Okasaki出版。本书使用SML符号;由于缺乏仿函数,将其示例转换为F#具有挑战性。但好处是巨大的;你会在这个过程中学到很多东西,另一方面可以帮助F#社区。正如@Jack P.所提到的,其中许多数据结构都是ported to F#;他们可能是一个很好的开始。

  2. 保尔森的
  3. ML for the Working Programmer。我特别喜欢使用归纳来证明程序的正确性。本书中的一些重要例子,如为lambda-calculus编写解释器一个战术定理证明器很有趣,并且接近你感兴趣的领域。

    < / LI> Hudak的
  4. The Haskell School of Expression。本书将为您提供非常有趣的时间和成就感,因为您完成了真实世界和令人兴奋的应用程序。此外,本书中有很多关于设计DSL的有用信息。
  5. 我真的很佩服你通过反复试验过程学习F#的持续性。如果你能在约翰哈里森的书之后存活下来,我想很少会对你产生挑战。我建议你用另一种函数式语言找到一个真正的应用程序,我们在F#中没有它并将其移植。例如,从本书的示例中,在F#中编写一个类似于CoqIsabelleHol-light的简单证明助手并不是到目前为止。

答案 1 :(得分:3)

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

Richard Bird, Philip Wadler - Introduction to Functional Programming, 1st Ed ISBN:0134841891(本书的FP语言是米兰达)

和所有经典

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