最初の優れた関数型プログラミングプロジェクトは何でしょうか?
私は学士号プロジェクトの強打で仕上げたいと思っており、関数型プログラミングプロジェクトで仕上げたいと思っています。学校では勉強していませんでしたが、自分で新しいことを学ぶように心がけています。新しいパラダイムを学ぶことは、新しい言語だけでなく、教師にとっても興味深いことだと思いました。 。
問題は、夏休みを利用して関数型プログラミングをよりよく理解し、1つの言語に慣れるために、プロジェクトの少し前に開始したいことです。
少しやりがいのある優れた実践プロジェクトだと思いますが、言語やパラダイムなども学ぶことができます。それから、私の学士プロジェクトとしては、どのようなプロジェクト(より高度なプロジェクト)になると思いますか。
関数型プログラミングに入るときに、最初に最適な言語を提案していただければ幸いです。
一般に、比較的数学的または論理的なものを使用する方が簡単です。関数型プログラミング言語は、特定の入力から出力への何らかの変換を表すアプリケーションに適しています。
難易度の大まかな順序でいくつかのアイデア:
遺伝的アルゴリズム-ソリューションを単純なDSLで表す特定のタスクへのソリューションを進化させるプログラムを記述します。 2Dグリッドで食べ物を探し、さまざまな種類の戦略を進化させる小さなボットを構築する前に、楽しみました
コンビネーターの解析-より高次の関数を使用して任意の言語のパーサーを構築できるようにする parser combinator ライブラリを構築します。
本当に挑戦したい場合は、コンピューターゲームを作成してみてください...ゲームには巨大な量の可変状態があり、トリッキーになる可能性があるため、これはトリッキーなタスクであることに注意してください関数型プログラミングスタイルで管理します。モナドなどについてあなたが知りたかった以上のことを学ぶことを期待してください...
実用的な関数型言語としてClojureをお勧めします。私はこれを約18か月間使用しており、その選択に非常に満足しています。主な理由は次のとおりです。
以下を使用すると、基本を非常に簡単に試すことができます。
特定のプロジェクトについて考える前に、関数型プログラミングの基礎を学ぶことから始めて、適切なプロジェクトのタイプをよく理解できるようにします。
始めるのに最適な場所はおそらく コンピュータプログラムの構造と解釈 (SICP)で、LISPのScheme方言に基づいています。これは古典的なCSテキストであり、全文はオンラインで入手できます(リンクあり)。
凝ったものにして、JVMをターゲットとするより現代的な関数型言語を使用したい場合は、Clojureをご覧ください。 SICP 特にClojure用 の適応バージョンもあります。
SICPのテキストを検討すると、関数型プログラミングが特定のタイプのタスクに非常に適している理由がわかります。この演習は、本格的なプロジェクトのきっかけとなる可能性があります。 Clojureルートを使用することを選択し、いくつかの既存のプロジェクトを調べたい場合は、いくつかの優れたリンク here があります。
定量分析
ファイナンスがやや興味深い場合、関数型プログラミングでクオンツなものを実行することは非常にアルゴリズム的であるため、良い一致です。私はポートフォリオ理論や、シャープやソルティーノの比率などについて話しています。ファンドのリターンを分析し、さまざまな統計や図表などを提供するアプリを作成します。
F#をお勧めするのは、F#を使い始めるのが簡単な関数型言語であり、優れたツールと優れたフレームワークを備えているからです。他の選択肢はLISPとclojureですが、それらを学ぶのは少し難しいです。
有利なスタートを切るには、F#で小さなブラックジャックゲームを実装してみることができます。これは、この間に割り当てられた宿題プロジェクトです 短いビデオチュートリアル 。ソリューションは、ネット上(およびビデオの1つ)でも提供されています。
OCamlを使用してスキームまたはLISPのインタープリターを作成できます。
どの関数型言語を考えていましたか。それぞれに異なる特徴があります。私に最も大きな影響を与えた1つの言語はHaskellでした。私も同じようにすることをお勧めします。
いくつかのオープンソースプロジェクトに貢献することもできます。
たとえば、 Fregeプログラミング言語 プロジェクトでは、やらなければならないことがたくさんあります。たとえば、ベースのHaskellライブラリの移植を気にすることができます。これにより、Haskellの専門家のようになります。