Tuples Was: Small things Java lets you do, but not everywhere.

Brian Goetz brian.goetz at oracle.com
Sun Aug 26 21:35:11 UTC 2018

> The current plan is to introduce tuples once we have value type, because unlike arrays, a value type can be stack allocated or even register allocated.

No, there's no current plan to introduce (structural) tuples.

However, records (data classes), can be thought of as "nominal tuples" 
-- perhaps that's what you meant?  We don't need value types to do 
these, though when we have value types, records can be values as well.

> tuple MinMax(int min, int max);
> MinMax minmax(int value1, int value2) {
>    if (value1 < value2) {
>      return (value1, value2);
>    }
>    return (value2, value1);
> }
> in that case we can pattern match on tuples if the target type is available
> MinMax result = ...
> switch(result) {
>    case (res1, res2) -> res1 + res2;
>    case (0, 0) -> throw ...;
> }

You can do this without tuples, with feature plans that are already on 
the books:

     record MinMax(int min, int max);

     let MinMax(var min, var max) = minmax(..);  // unconditional 
pattern match
     // min and max are now in scope

More information about the valhalla-spec-observers mailing list