久しぶりにJavaで遊んで、JavaでFree Monad書いた際に得られた知見を記しておきます。 https://github.com/xuwei-k/free-monad-java 筆者は、Javaの言語仕様や、型理論に関して、人並みかもしれないけど(?)別に専門家ではないので、あまり厳密なこと求められても困るというか、ちょっと変なこといってる可能性もありますが、そこは生暖かい目で見守ってください。案の定指摘をもらったので、コメント欄もちゃんと読むといいよ! さて、突然ですが、例えばこれ http://stackoverflow.com/q/1031042/605582 を見ると 「本質的には、Javaのwildcardと、Scalaのexistential typeは同じ」 的なこと言われてます(?)が、Scalaの抽象型を使用すると可能な以下の様なことが、Javaのwildcard