Take the 2-minute tour ×  I'd like to be more explicit about my
closures regarding their argument types. So I would write
something like  List<Y> myCollect(List<X> list, Closure<X,Y>
clos) { ... }  I know that Groovy won't use that type
information, but Groovy++ may use it at compile time. Can this
be be achieved (other than putting it into a comment)?  UPDATE:
The title may sound misleading, but I thought the above example
would make it clearer. I'm interested in specifying types of a
closure which is the argument of some function. Suppose, I want
to redefince the built-in collect. So I'm interested in writing
myCollect, not in writing clos. What I want to achieve is get
compile time errors  myCollect(['a', 'ab'], { it / 2 }) //
compile error myCollect(['a', 'ab'], { it.size() })  // OK
share|improve this question In the type Closure<V>, the V
represents the return value of the closure, not its parameters.
As such, it wouldn't make sense to have a Closure<V, X> since
you can't return two values. –  Nancy De