&gt; I do not think most Java programmers regularly care about the lack of abstractions like higher-kinded or union types.<p>When you become used to a given language, you start to reason in its terms. A programmer who is used to Java is used to its shortcomings and will not miss Lisp macros or dynamic types.