The author claims that by removing some type inference (lambdas and generic instantiation) you can reduce the amount of code required to implement type-checking.

  • John@mastodon.social
    link
    fedilink
    arrow-up
    2
    ·
    8 months ago

    @armchair_progamer no mention of (mutual) recursion? It’s been a while since I worked on my type checker, but I thought that you needed to separate inference into unification variable generation and constraint solving so that you don’t fall into an infinite loop (each function asking the other functions type - forever).

    • armchair_progamer@programming.devOPM
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago

      You probably need to annotate recursive function return values. I know in some languages like Swift and Kotlin, at least in some cases this is required; and other languages have you annotate every function’s return value (or at least, every function which isn’t a lambda expression). So IMO it’s not even as much of a drawback as the other two.

  • Kogasa@programming.dev
    link
    fedilink
    arrow-up
    2
    ·
    edit-2
    8 months ago

    That’s quite the drawback. I’m not sure if I believe a large number of keywords would have a good effect on ergonomics