2011-02-02 23 views
4

関数型プログラミング言語でオブジェクトを使用する正当な理由は何ですか?私はクラスの.netエコシステムを扱う際に、オブジェクト側に大きく寄与する関数型プログラミング言語であることがわかります。しかし、他のアセンブリ/プログラムとのこの相互作用から離れて、C#で書かれているかもしれませんが、なぜ関数指向の言語やスタイルでプログラムを分解するためにオブジェクトを使用するのですか?オブジェクトを関数型プログラミング言語で使用する利点は何ですか?

プログラムのスタイルを混ぜることは、助けや妨げになるのでしょうか?

+0

重複しています。 http://stackoverflow.com/questions/4113138/oop-in-a-purely-fp-context –

答えて

5

機能的およびオブジェクト指向のデザインは、さまざまなタイプの拡張を容易にします。機能的な設定で差別化された共用体を与えると、その型で動作する関数をいくつでも定義するのは簡単ですが、型に追加のケースを追加するのは難しいです。型にマッチします。一方、OO設定の基本型(またはインタフェース)を指定すると、新しいサブタイプを追加するのは簡単ですが、新しい操作の実装を追加するために既存のサブタイプを変更する必要があるため、それぞれに

現時点での作業に最も関連する拡張性のタイプによっては、機能的アプローチまたはオブジェクト指向アプローチのどちらかが意味をなさされる可能性があります。 1つの一般的なアプローチは、機能的なアプローチ「小さなもの」とOOのアプローチを「大規模」に使用することです(例:Luke Hobanのthis podcastに記載されています)。

+2

可能性もありますhttp://lorgonblog.wordpress.com/2008/09/22/how-does-functional-プログラミングの影響 - あなたのコードの構造/ – Brian

+0

私はまた、その一般的なアプローチを取っています。それは、関数をオブジェクト、すなわちオブジェクトを意味するようにカプセル化するのに役立ちます。 – gradbot

+0

これは、機能的アプローチがFOP/FOAメソッドのみを使用して大規模システムに拡張できないことを意味しますか? – WeNeedAnswers

0

オブジェクトは、大規模なプログラミングを容易にするカプセル化を提供します。

関数型プログラミング言語でオブジェクトを使用する正当な理由は何でしょうか?

オブジェクトは、様々な理由のための関数型言語で使用されている:プログラムの

  • 大規模構造。

  • (例えば、JVMまたはCLR上の)既存のOOPコードとの相互運用性。

  • より多くのクラスでクラス階層を拡張する能力は、自然に適合する問題です。

は、ヘルプや障害を証明するプログラムのスタイルを混合していますか?

助けになることはできますが、それは正当な理由なしに行うのは良い考えではありません。

+0

ご返信ありがとうございます。あなたの答えは、スケーラビリティや大規模なプログラミングの脆弱なアプローチとしての継承の使用など、私が問題を抱えている他の分野への経路をとる傾向があります。私は最近、コード "匂い"を見ていますが、私が見つけた興味深い点は、デザインパターンがすべての分野をカバーしていない言語を意味するということです。私は、私の心の中で、この「大」と「小」の全体的なプログラミングは少し時代遅れだと思う。私は小文字での関数型プログラミングを見ていませんが、小文字でCを使うのとほとんど同じです。 – WeNeedAnswers

関連する問題