私は現在、F# を学習して数か月が経ち、F#を学習するための最大の資産は、John Harrison による" Handbook of Practical Logic and Automated Reasoning " ( WorldCat ) のOCamlコードをF# に翻訳することです。
これは非常に効果的な学習方法であるため、より多くの本のコードを F# に翻訳する予定ですが、主に関数型の概念や現実世界のアプリケーションに焦点を当てた本は、通常AI、コンパイラー、定理証明などの関数型言語で記述されることで知られています。および推論アシスタント。
プログラムをある言語から別の言語に翻訳するのは些細な作業かもしれないと思うかもしれませんが、実際にはそのようなことを行うと、言語だけでなく、翻訳を行うために学習し理解しなければならない環境やツールにも違いが生じます。両方の言語とその環境の深さを探る必要がありますが、それについて読んだだけでは通常は考慮されません。たとえば、Ocaml を F# に変換する際に、トップレベルのocamldebugとタイム トラベル、トレースと F# にこれがあればいいのに、camlp4とそれが F# に存在しない方法、例外処理のパフォーマンスの違い、および型の推論を学びました。F# を実験したり本を読んだりするだけでは理解できない方法で、対応する F# を理解することを余儀なくされました。
関数型プログラミングの概念をカバーするソースコード、できれば関数型のソースコードを使用/含む本、または通常は関数型言語で書かれた現実世界のアプリケーションであり、ソースコードを翻訳することで関数型プログラミングの学習に役立つ本を他に知っていますか? F#に?
この目的を主観的ではなく保つために、答えはそれが重要である理由を説明する必要があり、本を閲覧しただけでなく、本を使用した必要があります. 私は、関数型プログラミングを何年も行っていて、そのような本を読み進めることが関数型プログラミングで成功するための鍵であることに気付いた人々からの回答を探しています. 回答の例:
型推論- Benjamin C. Pierce による「型とプログラミング言語」( WorldCat )。重要性: 型推論コンパイラ エラーを解決する方法を理解するのに役立ちます。これは、エラーを解決するためのより良い方法につながり、より良いコードをもたらします。
CPS - " Compiling with Continuations " ( WorldCat ) by Andrew W. Appel - 重要性: 再帰でのスタックの使用を削除し、スタック オーバーフローを回避してパフォーマンスを向上させるのに役立ちます。テールコール最適化は関数の最適化、CPS はプログラムの最適化と考えています。
用語の書き換え- 「用語の書き換えとそのすべて」 ( WoldCat ) フランツ・バーダーとトビアス・ニポウ著無効。
Lambda Calculus - " An Introduction To Functional Programming Through Lambda Calculus " ( WorldCat )、Greg Michaelson 著 重要: ラムダ計算は関数型プログラミングの基礎です。この基本的な概念を理解すると、関数型プログラミングの理解が深まります。
編集
私は保留して、より良い回答が受け入れられるのを待ちたいと思いますが、SOで数日後にビューが大幅に減少することを知りました.
どちらの回答も、その本に詳しくない人にとっては素晴らしいものであり、ほとんどの本をまだ知らず、コピーを持っていない場合は、購入を真剣に検討するだろう.
PAD は私が求めていたより高度な本に注目したので、私は彼に承認票を投じます。受け入れを分割できれば、私はそうします。