I'd say Standard ML better fits the bill of "dead simple". The only issue is that tooling and learning resources are nearly nonexistent.
I'd say Standard ML better fits the bill of "dead simple". The only issue is that tooling and learning resources are nearly nonexistent.
Care to elaborate? What are you referring to?
- First-class modules don't feel very first class, with how clunky it is to use modules at the value level
- Records are very clunky and hacky to use
- Generative functors are a hack
- Special language-level equality magic is awful (although SML also has this problem)
- Special `let` forms (whether via ppx or integrated into the language) feel really hacky
- GADTs require too much handholding of the typechecker
- All the "Objective" parts have very few redeeming qualities and should probably never have existed
- The way infix operators work is really half-assed
I don't think OCaml is a _bad_ language - it's very practically useful. It's just not simple or elegant.
By the way, the Successor ML wiki says[1]:
> Standard ML, being incapable of evolution, is dead. The purpose of successor ML, or sML for short, is to provide a vehicle for the continued evolution of ML, using Standard ML as a starting point. The intention is for successor ML to be a living, evolving dialect of ML that is responsive to community needs and advances in language design, implementation, and semantics.
Again, I stand by my statement that Standard ML is dead.
[1] https://smlfamily.github.io/successor-ml/OldSuccessorMLWiki/...
(1) Successor ML is happening,
(2) Standard ML is alive and evolving,
(3) SML/NJ isn’t just an implementation but a distinct language which is a successor to Standard ML and which incorporates what was described as “Successor ML”.