> De: "John Rose" <john.r.r...@oracle.com> > À: "Rémi Forax" <fo...@univ-mlv.fr> > Cc: "joe darcy" <joe.da...@oracle.com>, "core-libs-dev" > <core-libs-dev@openjdk.java.net> > Envoyé: Jeudi 13 Juillet 2017 23:05:14 > Objet: Re: java.util.Pair
> On Jul 13, 2017, at 1:39 PM, Remi Forax < [ mailto:fo...@univ-mlv.fr | > fo...@univ-mlv.fr ] > wrote: >> Tuples are like an array of value types parameterized by a constant integer > The homogeneous case is pretty simple; most of what you need is > to allow a generic type to be parameterized by an integer. C++ templates > have had that for a long time. > What's harder is to have a two-step process for type instantiation: > First, tell me the arity N, and second, for each position under that arity, > tell me the type T[i], i<N. (And don't break type inference.) I think > the most Java-like way to handle it might be type-functions that overload > alongside generic types. But there are many, many ways to slice it. or use a recursive definition like in Ceylon https://modules.ceylon-lang.org/repo/1/ceylon/language/1.0.0/module-doc/Tuple.type.html and the fact that value types are flatten to specify the rest, i.e a Tuple contains a T first and a Tuple rest. > C++ templates can express heterogeneous tuples: > [ http://en.cppreference.com/w/cpp/utility/tuple | > http://en.cppreference.com/w/cpp/utility/tuple ] > Typically there is a small limit to C++ tuple size, because the underlying > template implementation has its size set to the arity limit. > — John Rémi