1

ほとんどのpplと同様に、私は多くの命令型コード(主に、Java、Ruby、Javascript)から始めて、今でも多くの命令型コードを実行しています。

私はOOの大ファンではありませんでした。それは、それを正しく理解していなかったか、OOを考えていなかったためです。

javascript、関数の受け渡し、クロージャなどを介してFPを初めて垣間見ることができました。それ以来、FPが大好きになっています。

最近、私はClojure(そしてScalaかもしれません)に興味を持ち、いつかHaskellに行くかもしれません。私は機能的アプローチで見たものが好きですが、どのように機能的だと思いますか?私は過去3〜4年間、命令型の作業を行ってきました。私の脳は、問題に取り組んでいる間、命令型と考える傾向があります。

どうすれば命令型スタイルを学習せず(必要ですか?)、より機能的に考えることができますか?

4

2 に答える 2

3

いいえ。命令型スタイルはまだ必要なので、学習しないでください。多くのよくできたFPライブラリでさえ、裏でやや不可欠に見えます。ツールとテクニックのリストにFPを追加するという観点から考える方が、いずれかのテクニックで完全に金属化するよりも優れています。

では、FPスタイルの学習方法について教えてください。おもちゃのプロジェクト-またはあなたがあなた自身の使用のために書くユーティリティプロジェクト。または地獄、あなた自身にさらに別のブログを書いてください-しかしひねりを加えて!上で述べたように、重要なことは練習です。その際、共有状態は避けてください。できるだけ多くの場所で純度を追求します(つまり、副作用を回避します)。クロージャ、パターンマッチング(言語でサポートされている場合)、ラムダ関数を使用します。関数がプログラムのファーストクラスのデータ型であるという観点から考えてください。それらを入力として受け取り、出力として返します。リストは続きますが、それらを監視している場合は、同じ概念が何度も繰り返されます。

この点に関して穏やかな微調整が必​​要だと思われる場合は、F#やScalaなどのFPスタイルを促進するツール(言語)を使用してください。

「タフな愛」のような助けがもっと必要だと感じたら、Haskellに連絡してください:)

それ以外の場合は、選択したツールを使用し、FPの概念(上記)を念頭に置いてください。このルートに進むことにした場合は、F#とC#を使用して、「ほとんど」のFP言語(F#)と「ほとんど」のOO言語C#の両方に適用される手法を説明するReal- WorldFunctionalProgrammingというかなり良い本があります。

于 2010-10-14T18:39:43.057 に答える
1

Haskellに行きましょう。それは純粋なので、あなたは機能的であると考えることを余儀なくされています。F#またはScalaでも、非常に命令型のコードを記述できます。Haskellに関するGrahamHuttonの本を強くお勧めします。

于 2010-12-23T00:22:28.230 に答える