Variants/case classes/algebraic data types/sums/oh my!

Brian Goetz brian.goetz at
Sat Jun 11 16:24:06 UTC 2016

To amplify John's comments -- we are very interested in these topics, 
but we believe there are some fundamentals that have to be addressed 
first.  No need to dive into great detail about how great case classes / 
destructuring pattern matches are; we are more than aware :)

> I believe that all of the existing languages could benefit from both
> JVM and Java language support for the types, and I believe that support
> could be provided with minimal, non-intrusive changes to the virtual
> machine (an extra piece of class metadata, no new bytecode
> instructions, a couple of extra syntax rules in the Java language that
> likely build upon the existing switch statement, and no new keywords).

By way of setting expectations .... there are no minimal, non-intrusive 
language or JVM features.  Usually, it requires a tremendous amount of 
work to make a feature merely *seem* less intrusive; consider lambdas, 
which are "just" function literals -- except making them work required 
entirely overhauling type inference and method overload selection -- 
which if done right, no one notices.

That said, we're willing to invest in big features -- but as John 
mentioned, there are some things ahead of this one on the queue, which 
are probably prerequisites for doing this well.  (For example, value 
types are a prerequisite for useful tuples.)

So, with those expectation-settings comments aside, we're interested to 
see what you come up with, and we encourage you to follow the valhalla 
discussions to see where we're going.  (In particular, I'm interested in 
hearing what you think the VM is missing for these features.)

More information about the valhalla-dev mailing list