There are some true observations here, but the real problem is that simple languages are often not very productive / useful, and languages become more complex when people use them (demanding features)
Otherwise SML would be fine, and there's no need for OCaml
Otherwise Scheme would be fine, and there's no need for Common Lisp
Otherwise C would be fine, and there's no need for C++ or Rust (or Austral or whatever)
----
I think a better way of framing it is how much useful functionality you can put in a language while still feeling "simple", or at least familiar.
There is only limited syntactic space, and features tend to interact with combinatorial explosions, so more features definitely weigh down a language.
----
Another strategy is the "simple core" language, leaving most stuff to libraries. But you have to only look at JS to see how that complexity pops up elsewhere often in greater form (in the package manager)
Likewise look at C++ 20 coroutines or just STL in general ... there is a limited amount in the core, and a bunch of hooks for the user, but it is awfully complex as a whole.
This is one reason I really like lua - it is a simple enough language that it can stand the test of time, while being easy enough to learn by anyone, and still being stupid fast with luajit. A great little language, especially when combined with teal.
Otherwise SML would be fine, and there's no need for OCaml
Otherwise Scheme would be fine, and there's no need for Common Lisp
Otherwise C would be fine, and there's no need for C++ or Rust (or Austral or whatever)
----
I think a better way of framing it is how much useful functionality you can put in a language while still feeling "simple", or at least familiar.
There is only limited syntactic space, and features tend to interact with combinatorial explosions, so more features definitely weigh down a language.
----
Another strategy is the "simple core" language, leaving most stuff to libraries. But you have to only look at JS to see how that complexity pops up elsewhere often in greater form (in the package manager)
Likewise look at C++ 20 coroutines or just STL in general ... there is a limited amount in the core, and a bunch of hooks for the user, but it is awfully complex as a whole.