3 ms·
That's a pretty appalling set of justifications. I don't know of any type systems with perfect type inference that are still useful for fully exploiting types.
by jolux 6y ago
That's a pretty appalling set of justifications. I don't know of any type systems with perfect type inference that are still useful for fully exploiting types.
- Trasmatta 6y agoCrystal is the closest I've seen to match that. It's type inference is the most robust I've seen, you can write it almost like Ruby and still get full static type checking. I prefer to still use annotations fairly often with it though. The trade off for that powerful type inference is a slow compiler.
- Rochus 6y ago> Crystal is the closest I've seen to match that And it's 20 times faster than MRI Ruby JIT 3.0, see http://software.rochus-keller.ch/are-we-fast-yet_crystal_ruby_2_3_lua_node_i386_results_2020-12-23.pdf http://software.rochus-keller.ch/are-we-fast-yet_crystal_rub.... It's a pity Ruby typing went in another direction. > The trade off for that powerful type inference is a slow compiler. When run in the default (i.e. no release, debug) mode, build time is ok, especially for rebuilds when only one file has changed which is less than a second. Release builds are slow (see my PDF).
- tinco 6y agoYou can go really far in Haskell without specifying a single type. I haven't done so in a long while, but I'm pretty sure explicit types in Haskell are only necessary when you're trying to lock down an API or are outputting to something generic. And how are the justifications appalling? He thinks annotations are a detriment to the expressiveness of the language, and Ruby prides itself on being expressive.
- jolux 6y agoLocking down an API is a critical feature of a type system, though, and beyond that, there are absolutely language extensions in Haskell that are not inferrable, in addition to polymorphic recursion. OCaml is the same way: the inference is very good, but not total. As for being a reduction to the expressiveness of the language, I think Haskell is proof that you can have annotations without reducing the expressiveness of the language. Type annotations in Haskell and Idris don’t even interfere with value-level syntax!