我现在需要几个月的时间来学习F#学习F#正在翻译约翰哈里森的“OCaml”(Handbook of Practical Logic and Automated Reasoning)中的WorldCat代码,进入F#。
由于这是一种非常有效的学习方法,我计划将更多书籍中的代码翻译为F#,但书籍主要关注functional concepts或real world applications,通常以使用函数式语言编写而闻名例如AI,compilers,Theorem Provers和Reasoning Assistants。
虽然人们会认为将一个程序从一种语言翻译成另一种语言可能是一项微不足道的任务,但实际上,这样做不仅会在语言上产生差异,而且还会产生必须学习和理解的环境和工具的差异。译文。人们需要探索两种语言及其环境的深度,这些语言在阅读时通常不会被考虑。例如,在将Ocaml翻译为F#时,我学习了top-level,ocamldebug和时间旅行,trace并希望F#有这个,camlp4以及F#中不存在它, exception handling performance differences和type inference以某种方式强迫我以F#试验或阅读书籍的方式理解F#对应物。
您是否知道任何其他使用/包含源代码的书籍,最好是功能性的,涵盖函数式编程的概念,或者是通常用函数式语言编写的实际应用程序,它们将通过翻译帮助学习函数式编程F#的源代码?
为了保持这个目标而不是主观,答案必须解释为什么它很重要,你必须使用这本书而不仅仅是浏览这本书。我正在寻找多年来一直从事函数式编程的人的答案,并且已经找到了通过这样一本书来完成函数式编程的关键。 答案的例子:
Type inference - 本杰明C.皮尔斯的“Types and Programming Languages”(WorldCat)。重要性:帮助理解如何解决类型推断编译器错误,从而导致更好的方法来解决错误并产生更好的代码。
CPS - “Compiling with Continuations”(WorldCat)作者:Andrew W. Appel - 重要性:帮助在递归中删除堆栈的使用,从而堆栈溢出并改进性能。我认为尾部调用优化是优化函数,CPS是优化程序。
Term rewriting - “Term Rewriting and All That”(WoldCat)作者:Franz Baader和Tobias Nipkow重要性:通常使用ATP和Proof assistants编写一种功能语言并依赖于术语重写,如果术语重写不正确则证明引擎无效。
Lambda Calculus - “An Introduction To Functional Programming Through Lambda Calculus”(WorldCat)作者:Greg Michaelson重要性:Lambda演算是函数式编程的基础。理解这个基本概念可以更好地理解功能编程。
修改
虽然我想推迟并等待接受更好的答案,但我已经了解到,在过了几天之后,这些观点大大减少了。
我发现这两个答案对于那些不熟悉书籍的人来说都很棒,如果我不知道并拥有大部分书籍的副本,我会认真考虑这些书籍。
由于PAD注意到我所追求的更高级的书籍,我给他接受投票。如果可以分开接受我会。
答案 0 :(得分:7)
你列出的对我来说太可怕了。我建议一些更基本的:
Purely functional data structures由Okasaki出版。本书使用SML符号;由于缺乏仿函数,将其示例转换为F#具有挑战性。但好处是巨大的;你会在这个过程中学到很多东西,另一方面可以帮助F#社区。正如@Jack P.所提到的,其中许多数据结构都是ported to F#;他们可能是一个很好的开始。
ML for the Working Programmer。我特别喜欢使用归纳来证明程序的正确性。本书中的一些重要例子,如为lambda-calculus编写解释器和一个战术定理证明器很有趣,并且接近你感兴趣的领域。
< / LI> Hudak的我真的很佩服你通过反复试验过程学习F#的持续性。如果你能在约翰哈里森的书之后存活下来,我想很少会对你产生挑战。我建议你用另一种函数式语言找到一个真正的应用程序,我们在F#中没有它并将其移植。例如,从本书的示例中,在F#中编写一个类似于Coq,Isabelle或Hol-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)