IMO people are mixing apples and orange. the fact that Java's type ssytem sux does not imply that all static typing systems should be like that. Nice is a nice example of a type system where you add very little informations to those that can be inferred automagically.
Also, I won't bet that you can't define an Even or Odd class in haskell, it should be something like:
class Even n where check_even :: n
I think we must face the simple law that actual "dynalanguages" like python or ruby are just a mix of
3 large simple+expressive libraries
and that static typed languages that provide #1 and #2 massively lack #3.