3 つのエージェントからなる単純な「マルチエージェント」システムを作成したいと考えています。エージェントごとに、メールボックス プロセッサをカプセル化して作成されたタイプがあります。すべてのエージェントに共通の属性 (position、id など) と関数 (sendMessage、move) があり、エージェントはメールボックス プロセッサの実装 (メッセージの処理方法) によって互いに異なります。さらに、特定のエージェントに固有の他の機能によって異なる場合があります。すべてのエージェントには、メッセージの送信先となる他のエージェントのリストも (その属性の 1 つとして) 含まれている必要があります。これは、F# でメールボックス プロセッサを操作する予定のモデルに基づいた非常に単純なモデルです。
OOP では、これはエージェント インターフェイス (または抽象クラス) を作成することを意味し、特定のエージェントはすべて、このインターフェイスから独自の実装で継承されます。
F# で OOP が可能であることは知っていますが、純粋な機能設計に固執したいと思います。ただし、この場合、OOP が最も適したアプローチのように思えます。関数型 (F#) の設計に関して何かアイデアをいただければ幸いです。ありがとうございました。