Do you want a language that's simultaneously (1) small & simple, (2) sound & statically typed (pure? total?), and (3) highly expressive ("general purpose")? Also (4) convenient? IME it's the combination that gets really tough. Squeeze it in one place, it bulges out in another.
Conversation
Things like dynamic types, shared mutable state, or unchecked pointers are incredible pressure release valves for making programs go through when you're backed into a corner. Why C, Go, or Lua can be "simple". Without them, suddenly the type system needs to support *everything*.
2
2
14
(And generally, simpler type systems make tougher restrictions on programs)
Maybe to deal with that, I can go for dependent types. Now I'm stepping in a can of worms w.r.t. advanced theory issues. And maybe the annotation burden is too high, so now I want an elaboration phase...
2
5
What's so bad about elaboration?
1
Nothing inherently, the emphasis was on the ellipsis. ;) Lots of useful features you can incrementally add to an elaborator.
1
1

