今日の小ネタ、第2弾。ホント、なんとなく書いてます…。 ScalaにはOptionというクラスがあって、標準ライブラリやら普通のアプリケーションのコードの至る所に出てきます。これは、どこぞのMaybeモナド…にあたるものだと思うのですが、これをGroovyで書いてみようと思います。 まずは、最上位のインターフェース。 Monad.groovy interface Monad<T> { Monad<T> flatMap(Closure closure) void foreach(Closure closure) Monad<T> filter(Closure closure) } Monadインターフェースに要求するものが、どう見てもScalaです…。 *withFilterというのはさておき あと、Groovyにジェネリクスを書いてもあんまり意味がないのはわかってますが、一応ということで。