3 ms·
Being too limited for the intended purpose is still being wrong on some level. Not a bug, but still. Granted, sometimes you don't care: stuff like `true?1:"foo
by loup-vaillant 9y ago
Being too limited for the intended purpose is still being wrong on some level. Not a bug, but still.
Granted, sometimes you don't care: stuff like `true?1:"foo"` is of type int an has value 1, but the compiler will rejected because of a type mismatch in the conditional—but you don't care because the code smell is too big and obvious to ignore.
Sometimes however you do care, if only a little: the value restriction in ML for instance prevent some function from being polymorphic because some side effect might break the type system. This forces you to eta-expand the function definition (no partial application, you need to write the arguments explicitly), which is a bit of a hassle in some cases.
- masklinn 9y ago> Being too limited for the intended purpose is still being wrong on some level. Not a bug, but still. By that criteria, every single statically typed language is "wrong on some level", you'll always find something you want to do/express which a specific language's compiler will not accept. That's not very helpful. > Sometimes however you do care I'm not saying people should not care, caring about lexical lifetimes being a pain in the ass is perfectly sensible (there's a reason why non-lexical lifetimes are being implemented after all). I'm saying there's a gulf between "the compiler does not allow X" and "the compiler is wrong", and lexical lifetimes are the former.