Ah, I see.
Applying that terminology, I’m trying to do the centaur thing, but this last piece feels a bit reversed at times.
There is this snippet in the new documentation that states:
Tuple Support
The ganged trials also support unpacking of tuples. If you have a trials that produces tuples, you can unpack them into separate parameters:
import com.sageserpent.americium.Tuple2;
final Trials<Tuple2<Integer, String>> pairs =
api().integers().flatMap(i ->
api().strings().map(s ->
Tuple2.of(i, s)));
final Trials<Boolean> booleans = api().booleans();
pairs
.and(booleans)
.withLimit(3)
.supplyTo((Integer number, String text, Boolean flag) -> {
System.out.format("Number: %d, Text: %s, Flag: %s\n",
number, text, flag);
});
The Tuple2 from pairs is automatically unpacked into the first two parameters!
This is a confabulation (although something similar does actually hold in the JUnit5 integration). Nevertheless it was sufficiently plausible at first sight that I went off and looked through the codebase, thinking “When did I implement that feature?”. What’s more, I never contributed a tuple class; I just use either the Scala standard ones or the Java Cyclops ones. Yikes.