我现在有几个月的时间学习F#学习F#的最大资产是将John Harrison的“Handbook of Practical Logic and Automated Reasoning”(WorldCat)中的OCaml代码翻译成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和_3041563中不存在这种方式,这种方式迫使我理解F#对应物通过F#试验或阅读书籍我不会有的方法 .
您是否知道任何其他使用/包含源代码的书籍,最好是功能性的,涵盖函数式编程的概念,或者是通常用函数式语言编写的实际应用程序,通过翻译源代码来帮助学习函数式编程到F#?
为了保持这个目标而不是主观,答案必须解释为什么它很重要,你必须使用这本书而不仅仅是浏览这本书 . 我正在寻找多年来一直从事函数式编程的人的答案,并且已经找到了通过这样一本书来完成函数式编程的关键 . 答案的例子:
-
Type inference - “Types and Programming Languages”(WorldCat)作者:Benjamin C. Pierce . 重要性:帮助理解如何解决类型推断编译器错误,从而导致更好的方法来解决错误并产生更好的代码 .
-
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注意到我所追求的更高级的书籍,我给他接受投票 . 如果可以分开接受我会 .
2 回答
你列出的看起来对我来说太可怕了 . 我建议一些更基本的:
保尔森
Hudak
我真的很佩服你的坚持通过反复试验过程学习F# . 如果你能在John Harrison 's book, I think very few ones will look challenging to you. I would recommend you to find a real application in another functional language, which we don'之后在F#中生存并移植它 . 例如,从本书的例子中,在F#中编写一个类似于Coq,Isabelle或Hol-light的简单证明助手并不是到目前为止 .
考虑到您的问题中列出的 Headers ,您已经远远领先于基础知识 . 但谈到我建议考虑的基本面:
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)