monad 的一般情况可以在 Java 6 中表达吗?注意“一般情况”这个词——monad 的一般情况可能是不可表达的,尽管 monad 的许多特殊情况(即许多特定的 monad)是可以表达的。
这里的问题是(缺乏)Java 中的高级泛型;但是,我看到示例 Haskell 代码确实使用https://stackoverflow.com/a/877036/1123502(即public class Fix<F extends Fix<F>>
)之类的方法移植到了 Java。
当然,非类型安全的实现(如使用 Object 和向下转换)并不有趣。
更新:有 2 个常见的 monad 定义:join-fmap 和 bind-return。尽管它们(在数学上)是等价的,但它们可能不是等价的,因为一种定义可以用 Java 表达,而另一种则不是(但是,在我看来,不等价的可能性不大)。所以我的问题涉及这两个定义。
底线:是否有人克服了所有障碍并在 Java 6 中编写了“一般情况”单子?或者,或者,请指出一篇论文,或一篇详尽的博客文章,或彻底解释为什么不可能。