A peek at the roadmap for pattern matching and more

Guy Steele guy.steele at oracle.com
Thu Aug 13 19:15:23 UTC 2020


> On Aug 13, 2020, at 9:42 AM, Brian Goetz <brian.goetz at oracle.com> wrote:
> 
> . . .
>> i should wuth by example a method minMax that returns both the minimum and the maximum of an array
> 
>>   public static (int min, int max) minMax(int[] array) {
> 
> Nope.  Not going there.  I went down this road too, but multiple-return is another one of those “tease” features that looks cool but very quickly looks like glass 80% empty.  More fake tuples for which the user will not thank us.  And, to the extent we pick _this particular_ tuple syntax, the reaction is “well then WTF did you do records for?”  Having records _and_ structural tuples would be silly.  We’ve made our choice: Java’s tuples are nominal.  
> . . .
> 
> There’s room for an “anonymous tuple” feature someday, maybe, but we don’t need it now.  

I think it is important that we first get the right story for general nominal tuples.

And I also recommend that we then quickly nail down some turf by immediately putting into the library (say, in java.util) some standard record classes

	Pair<A,B>(A first, B second)
	Triple<A,B,C>(A first, B second, C third)
	Quadruple<A,B,C,D>(A first, B second, C third, D fourth)
	. . .
	Octuple<A,B,C,D,E,F,G,H>(A first, B second, C third, D fourth, E fifth, F sixth, G seventh, H eighth)

Once that is done, I believe it would be very easy, if we ever care to do it, to introduce

	(a, b, c)

in an expression context as a syntactic abbreviation for

	new java.util.Triple(a, b c)

and

	(A, B, C)

in a type context as a syntactic abbreviation for

	java.util.Triple<A,B,C>

N’est-ce pas?

(This is where I get to recount once again my little story about that fact that way back in 1995, I persuaded James and the Java team to remove C's comma operator from Java on the grounds that (a) in C it’s used only in macros, which Java doesn’t have, and in `for` statements, which can be handled specially in the syntax, and (b) it would leave open the possibility of supporting tuples later.  And 25 years later it’s still an option.)

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20200813/2249a428/attachment.htm>


More information about the amber-spec-experts mailing list