私は最近、F#を楽しみに学んでいます(私はVB.NET/C#の開発者です)。理論的にはそうです。しかし、C#ではなくF#でコーディングすることを選択するシナリオを考えるのに苦労しています。何か案は?
私は最近、F#を楽しみに学んでいます(私はVB.NET/C#の開発者です)。理論的にはそうです。しかし、C#ではなくF#でコーディングすることを選択するシナリオを考えるのに苦労しています。何か案は?
回答:
純粋な関数型プログラミングのいくつかの引数:
完全な扱いについては、「関数型プログラミングが重要である理由」および「関数型プログラミングが重要である理由」を参照してください。
C#ではなくF#でコーディングすることを選択するシナリオを考えるのに問題があります。何か案は?
ここから:
非同期サーバー
メタプログラミング(例:解析)
テクニカルコンピューティング
GUIアプリケーション
論理プログラミング
テスト中
パフォーマンス
inline
費用のかからない高次抽象化。ここでは、関数型プログラミングを多かれ少なかれ毎日使用しています。
かなり大きなデータセットを使用して、多くの統計的および保険数理的なことを行っています。データベースからフェッチされるデータは、本質的に静的で不変のオブジェクトです。メソッドを持つクラスを作成する理由はありません。
計算の各段階で詳細が追加されますが、基本的にオブジェクトは変化しません。パイプラインの「終わり」では、合計とカウントなどを計算するために、実際には大幅な削減を行っています。
これを想像してみてください。
for data in summarize( enrich( calculate( some_query( criteria() ) ) ) ):
print data
計算の各「フェーズ」は、単純な読み取り-計算-利回りを実行し、他のものと結果の複合オブジェクトを作成する関数型プログラミングループです。
(Pythonを使用しているため、ジェネレーター関数を使用した関数型プログラミングです。)
ステートレスで不変のオブジェクトを使用する方が簡単です。
criteria() |> some_query |> calculate |> enrich |> summarize
前方パイプ演算子はより明確なコードにつながる可能性があると思いますが、余談です。
map
は同じ効果を得るために作曲します。
明確な利点の1つは、より簡単に並列化できることです。
F#
関数型プログラミングを完全に表すものではありません。Clojure
代わりに試してください。