2013-02-06 16 views
19

私はF#で本を読み終えました。本書では、基本的なもののほとんどの練習をしました。今では、より高度なエクササイズを探しています。一般的な言語や関数型プログラミングの概念を使って自分のスキルを向上させます。F#先進的な練習

言語機能を学ぶために特別に設計された演習でF#を練習できる場所または本はありますか?現在、私は入門的なものや一般的なプログラミングの問題のWebサイト(たとえばProject Euler)を見つけることしかできませんでした。

私の目標は、機能的な方法で考える方法を学び、パターンマッチング、部分的に適用された関数、モナド/ワークフロー、末尾再帰などのようなものに慣れることです。私は機能的な構造を使って問題を解決する方法を学びたい。

他の関数型プログラミング言語(Haskellなど)用に設計された良い演習にも興味があります。

+1

まあ、彼らは特別に設計された演習ですが、あなたは[ここ](http://stackoverflow.com/questions/tagged/f%23)を試してみるよりも悪い可能性があります:) – Benjol

+1

あなたはF#コードベースを別のQ私はFoqとTickSpecを思考のためのすばらしい食べ物としてお勧めします。Paketも一見価値があり、もっと簡単なものを探しているなら、FunDomain/FsUno.Prodが面白いかもしれません。 –

+0

ありがとうございました(奇妙なことに、このQが見つからない、削除されたようです:/) – foobarcode

答えて

18

あなたが体験体験を通じて学ぶことを信じる場合は、Project Euler problemsがあなたの練習になるかもしれません。関数型プログラミングに限らず、数学的性質はF#やその他の関数型言語に適しています。 Yet Another Project Euler Seriesは、F#でProject Eulerを使い始めるには良いリソースです。

私はPrologを99 problemsを通して学んでいましたが、Lisp、Haskell、OCamlなども学びました。私はこれらの演習がF#を学ぶのに有益なリソースだと思います。 これらはうまく設計された問題です。最初のいくつかはリスト(F#の基本的なデータ構造)で作業することを教えてくれます。ロジック、ツリー、グラフに関するより高度な問題は、高度なF#機能を探索する良い機会です。参考のために必要な場合は、OCamlF#の解の集合を示します。

+0

問題はまさに私が探していた練習のタイプです!私はソリューションのf#バージョンを見つけることさえできた:http://fssnip.net/tags/Ninety-Nine+F%23+Problems – foobarcode

+0

私は私の答えhttps://で同じ解決策のセットを与えたと思うgithub.com/paks/99-FSharp-Problems。私はGithubが複数のファイルのためにもっと整理されているので好きです。 – pad

+0

はい、あなたは正しかった私が99の問題のリンクをクリックして少し熱心に投稿し、あなたの答えの残りをチェックアウトするのを忘れていた;) – foobarcode

5

tryfsharp.orgは、F#を学ぶのに最適なサイトです。チュートリアルは、スキルレベルと問題ドメインによって分類されます。あなたが探しているものかもしれません。

+0

私はすでにtryfsharp.orgに行ってきました。その例は、言語の最初の紹介には良いですが、私はより高度なものを探していました。 – foobarcode

11

私は最初の50 Project Eulerの問題を経て始めました。それは最初の素晴らしい学習体験でした。

すぐにStackoverflow F#タグに積極的に参加し始めました。他人からの答えを見て、自分の答えを研究しなければならないことは非常に教育的でした(あなたは教えることで学ぶことを知っています、それは本当です)。

私の最大の学習経験は、F#のオープンソースプロジェクトの仕事から来たものです。即ち、FsEye及びUnquoteである。これらのアイデアはどちらも、F#での私の経験を反映し、F#エコシステムを豊かにするための機会があったのを見てから来ました。 FsEyeの場合は、FSIの経験を強化していました。 Unquoteの場合は、ユニークなF#機能を利用していました。深刻なプロジェクトでの経験をすることによるこれらの2つの学習は、本当に私をF#の深い理解とスキルのポイントに導いてくれました。

+0

FsEyeは本当に甘いです。 – foobarcode

+0

オープンソースのアドバイスに同意します。プロジェクトオイラーの問題は素晴らしいですが、ちょっと狭いです。本格的なアプリケーションを使って作業したり苦労したりするのは、実際に私がクリックし始めた場所です。私の最初のF#ライブラリは巨大な学習であり、現在はMachine LearningのアルゴリズムをPythonの本からF#に変換しています。これは非常に有益なものです。さらに、私はこれらのアルゴリズムが必要:) – Mathias

1

HackerRankには、アルゴリズム上の課題があります。 functional programmingのセクション全体があります。ソリューションを作成するときは、選択する言語としてF#を選択できます。

関数プログラミングでは、いくつか例を挙げると、再帰関数、関数式構造体、パーサなど、さまざまなタスクグループから選択できます。