3 ms·
One huge benefit of (robust) type inference is type holes. That is the ability to leave parts of your code unwritten and have the compiler infer what the type o
by dwohnitmok 7y ago
One huge benefit of (robust) type inference is type holes. That is the ability to leave parts of your code unwritten and have the compiler infer what the type of those unwritten parts should be, and in more advanced cases, fill in the gap with candidate code.
The latter is something that isn't in any languages I would consider production-ready (although it seems tantalizingly close), but the former is already quite useful depending on how much type inference your language is capable of. If paired with the ability to search for code by type, it makes exploring APIs extremely friendly. Even without that ability, I've found the ability for the compiler to tell me what type belongs in a given empty chunk of code to be extraordinarily helpful for those times that I'm programming in a top-down fashion (scaffolding first, then fill in the concrete implementation).
- Sean1708 7y ago> The latter is something that isn't in any languages I would consider production-ready What languages have you seen it in?
- mrgriffin 7y agoNot OP, but my understanding is that it's a common approach in Idris. Here's the creator of the language deriving the implementation of zipWith without writing any code: https://www.youtube.com/watch?v=X36ye-1x_HQ&t=1274 https://www.youtube.com/watch?v=X36ye-1x_HQ&t=1274 Some other examples include: - Haskell: https://hackage.haskell.org/package/ghc-justdoit https://hackage.haskell.org/package/ghc-justdoit - Scala: https://github.com/TypeChecked/alphabet-soup https://github.com/TypeChecked/alphabet-soup - Agda: https://youtu.be/3U3lV5VPmOU?t=3159 https://youtu.be/3U3lV5VPmOU?t=3159 I was under the impression that justDoIt comes from Scala, but I can't find a reference for that.