Skip to content

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

Open

Description

@jnape

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

Activity

  1. jnape commented on Nov 19, 2017

    @jnape
    MemberAuthor

    This should be attempted again when addressing #15

  2. added this to the 2.0.1 milestone on Nov 30, 2017
  3. removed this from the 2.0.1 milestone on Jan 15, 2018
  4. jnape commented on Feb 25, 2018

    @jnape
    MemberAuthor

    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.

  5. added this to the 4.0.0 milestone on May 20, 2018
  6. jnape commented on Jan 28, 2019

    @jnape
    MemberAuthor

    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.

  7. jnape commented on May 19, 2019

    @jnape
    MemberAuthor

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

  8. removed this from the 4.0.0 milestone on May 19, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions