この質問(ピートによって書かれた)への回答では、OOPとFPに関するいくつかの考慮事項があります。特に、FP言語は、同一性と変更可能な状態を持つ(永続的な)オブジェクトのモデリングにはあまり適していないことが推奨されます。
これが本当かどうか、つまり、関数型プログラミング言語でオブジェクトをモデル化する方法を考えていました。Haskellの基本的な知識から、モナドはなんらかの方法で使用できると思いましたが、このトピックについては明確な答えを出すのに十分な知識がありません。
それでは、アイデンティティと変更可能な永続状態を持つエンティティは通常、関数型言語でどのようにモデル化されますか?
ここに、私が考えていることを明確にするための詳細をいくつか示します。(1)データベーステーブルからJavaオブジェクトにレコードを読み取る、(2)さまざまな方法でオブジェクトを変更する、(3)変更されたオブジェクトをデータベースに保存できる、典型的なJavaアプリケーションを取り上げます。
これはどのようにしてHaskellに実装されますか?最初にレコードをレコード値(データ定義で定義)に読み込み、この初期値に関数を適用してさまざまな変換を実行し(各中間値は元のレコードの新しい変更されたコピーです)、最終的なレコード値を書き込みますデータベースに。
これで全部ですか?各時点でレコードの1つのコピーのみが有効/アクセス可能であることをどのように確認できますか?同時にアクセスできるように、同じオブジェクトの異なるスナップショットを表す異なる不変の値を使用したくない場合があります。