4 ms·
The ecosystem is fragmented between four competing "standard libraries" that overlap in functionality but each one has some feature the other doesn't have. So y
by ithrow 6y ago
The ecosystem is fragmented between four competing "standard libraries" that overlap in functionality but each one has some feature the other doesn't have. So you can imagine the mess and frustration all this causes.
- eternalban 6y ago(Thanks to all who replied but yes, mainly this.) My dated impression is that you had to choose between Jane Street or the alternative. And the concern was that it didn't seem clear how to make this decision without first investing significantly in the language. So this possibility of 'choosing the wrong horse', in my mind, made it a more costly proposition.
- anuragsoni 6y agoThe story isn't as dire as it sounds like. Yes there are multiple stdlib alternatives, but I wouldn't classify any of them as a "wrong" choice. They interoperate pretty well, and using one stdlib alternative will not block you from consuming libraries where the maintainer chooses another stdlib alternative. I tend to look at this situation as there are multiple really high quality options to pick from. Base [1], and core [2] and containers [3] are the three options I typically recommend people to look into (if they are interested in options outside of the stdlib), and all three are really high quality. Your decision could end up being as easy as deciding which platforms are important for you, if you don't care about windows and need to work with unix apis then core or containers are excellent options. If you do care about windows, then starting with Base/Containers is an excellent choice. [1] https://opensource.janestreet.com/base/ https://opensource.janestreet.com/base/ [2] https://opensource.janestreet.com/core/ https://opensource.janestreet.com/core/ [3] https://c-cube.github.io/ocaml-containers/ https://c-cube.github.io/ocaml-containers/ Some additional notes: * Core can be seen as an extension to base as it has a very similar API (It re-exports many modules from base), and it adds some unix related utilities and additional data structures. * The built in Stdlib in OCaml has also been improving and if you are able to use a recent compiler version you might not feel the need for an stdlib alternative. * Containers is an excellent "default" option as it tries to provide a similar API as the stdlib and works on all major platforms supported by OCaml.
- eternalban 6y agoThank you, this was helpful.
- wtetzner 6y agoYeah, for the stuff I've been doing, just sticking with the built-in stdlib has been good enough.
- sleepydog 6y agoWith the caveat that I've only worked on toy projects, I've found the built-in stdlib to be perfectly adequate. I supplement with some well-known modules from dbuenzli@ and haven't felt like I was missing any basic functionality.