5 ms·
I don't know if I'd call OCaml dead simple. It's full of inconsistencies and bolted-on features that are practically useful but definitely not simple or elegant
by millimeterman 6y ago
I don't know if I'd call OCaml dead simple. It's full of inconsistencies and bolted-on features that are practically useful but definitely not simple or elegantly designed. It's kind of like the C++ of ML derivatives in that sense.
I'd say Standard ML better fits the bill of "dead simple". The only issue is that tooling and learning resources are nearly nonexistent.
- deleted 6y ago[deleted]
- yawaramin 6y agoThe main issue with Standard ML is that it's a dead language–it can't evolve beyond its current state. OCaml by comparison is steadily evolving.
- bctnry 6y agoThat's effectively not true[1]. [1]: https://github.com/SMLFamily/Successor-ML https://github.com/SMLFamily/Successor-ML
- yawaramin 6y agoThat repo is a bunch of TeX files (not even an implementation) that haven't been touched since 2018. I stand by my statement. 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/Successor_ML.html#Successor_ML https://smlfamily.github.io/successor-ml/OldSuccessorMLWiki/...
- millimeterman 6y agoLet's be real - Successor ML is never happening. I just don't think there's enough interest.
- yawaramin 6y agoYup. Realistically, the successor of ML is in fact OCaml.
- dragonwriter 6y agoSML/NJ, as I understand it, is implementing Successor ML features, so one of three things is true: (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”.
- andrepd 6y ago>full of inconsistencies and bolted-on features that are practically useful but definitely not simple or elegantly designed Care to elaborate? What are you referring to?
- millimeterman 6y agoJust some examples: - 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.
- ernst_klim 6y agoWords like "clunky" and "hacky" are evaluation judgments, not objective criticism.