HList.cons() static factory method doesn't infer tail type
HList.cons should be parametrized to take advantage of Generalized Target Type Inference, making the following expression infer the resulting HList type from right-hand argument:
SingletonHList<Integer> cons = HList.cons(1, HList.nil());
Tuple2<String, Integer> cons = HList.cons("foo", HList.cons(1, HList.nil()));
// ... and so on for other tuple specializations
Unfortunately, after adding this behavior, compile time was observed to have exponentially increased to over 15 seconds thanks to JDK-8055984, so this behavior shouldn't be added back until it's fixed (targeted for Java 1.9).
This should be attempted again when addressing #15
Apparently HListLens#3-HListLens8 are completely out of the equation as well, since proving the lens laws just for _3 blows up the javac stack under ~1G and then takes God knows how long to compile (I killed it after 10 minutes).
I am Jack's complete lack of surprise.
After Java12 comes out, I may make Java10 the required JDK version to target to use lambda, at which point, I can add this functionality back.
Pushing this until version 5, at which point Java 11 will be the target JDK, with anything before it considered a secondary priority