モナドの一般的なケースはJava 6で表現できますか? 「一般的なケース」という言葉に注意してください — モナドの多くの特定のケース (つまり、多くの特定のモナド) は表現可能ですが、モナドの一般的なケースは表現できない可能性があります。
ここでの問題は、Java の高次ジェネリクス(の欠如)です。しかし、Haskell のサンプル コードは実際にはhttps://stackoverflow.com/a/877036/1123502 (つまりpublic class Fix<F extends Fix<F>>
) のようなアプローチを使用して Java に移植されていることがわかりました。
もちろん、タイプ セーフでない実装 (オブジェクトやダウンキャストの使用など) は興味深いものではありません。
更新: 2 つの一般的なモナド定義があります: join-fmap と bind-return です。それらは (数学的に) 同等ですが、一方の定義は Java で表現可能であり、他方はそうではないという意味では同等ではない可能性があります (ただし、非同等である可能性は低いと思われます)。したがって、私の質問は両方の定義に関するものです。
結論: Java 6 ですべての障害を克服し、「一般的なケース」のモナドを書いた人はいますか? または、別の方法として、論文や詳細なブログ投稿を指摘するか、それが不可能な理由を詳細に説明してください。