lambda icon indicating copy to clipboard operation
lambda copied to clipboard

HList.cons() static factory method doesn't infer tail type

Open jnape opened this issue 9 years ago • 4 comments

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).

jnape avatar Sep 24 '16 21:09 jnape

This should be attempted again when addressing #15

jnape avatar Nov 19 '17 21:11 jnape

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.

jnape avatar Feb 25 '18 21:02 jnape

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.

jnape avatar Jan 28 '19 01:01 jnape

Pushing this until version 5, at which point Java 11 will be the target JDK, with anything before it considered a secondary priority

jnape avatar May 19 '19 23:05 jnape