3 ms·
Did you just say that Dart is a good language? You're aware of the memes about Dart's type system being completely broken by design right? https://www.dartlang
by brianpgordon 8y ago
Did you just say that Dart is a good language? You're aware of the memes about Dart's type system being completely broken by design right?
https://www.dartlang.org/faq#q-why-are-generics-covariant https://www.dartlang.org/faq#q-why-are-generics-covariant
Of course this is from the company that brought us interface{} and people seem to be OK with that...
- skybrian 8y agoFlaws in the type system just aren't that important to most people. Consider the popularity of Typescript, which is unsound.
- kiriakasis 8y agoI gather that you would prefer invariant generics. I know a bit about type systems but very little about subtyping so I would really enjoy some information :) Why are covariant generics bad? (also just a link is fine)
- brianpgordon 8y agoInvariant generics would at least let you rely on the type system doing its job correctly. But even better would be to annotate each type parameter as covariant, contravariant, or invariant - this is what Scala and C# and probably a bunch of other languages do. As an example, here's approximately how the Function trait is defined in Scala. The square brackets indicate type parameters (like angle brackets in Java), the - indicates covariance, and the + indicates contravariance. trait Function1[-T, +R] { def apply(arg1: T): R }