I'm just getting back into OCaml for a new small research project after many years of SML, Haskell and F#.
I quickly found myself missing some things when using the OCaml libraries, and I also missed having a syntax for monadic comprehensions.
OCaml Batteries Included seems to fill exactly these gaps. But I'm a little unsure whether it has reached the point of being mature, stable and widespread enough for this project. Part of my doubt comes from having a number of hiccups when installing it - including discovering that currently the installation instructions are out of date, and it was only by Googling that eventually found a response to a support request that explained what was required.
Is Batteries relatively stable? (Or at least more stable than the above would suggest?)
Is its use relatively widespread? (E.g., is 10% of new OCaml code written using it?)
What kinds of projects would it be recommended for?
(And, in particular would it be recommended for a small-medium sized research project that should yield a small library that likely would be maintained for some time.)
Any other recommendations?
Semi-disclaimer: I am one of current developers of Batteries Included.
It hasn't seen a great deal of uptake yet so far as I know. I haven't seen any packages released that depend on it. However, that alone shouldn't stop you from using it. Hopefully it will gain some traction as it continues to mature. I personally use it for all of my new OCaml development, both for personal projects and for my research work.
Expect to see it in a fair amount of flux for the duration of the 1.x cycle. We're committed to keeping the APIs backwards-compatible for all 1.x releases, but new things will be added and old modules/functions likely deprecated. Much of it should be pretty stable, although we are still finding and fixing bugs. That will be greatly aided, though, by having more people use it and report the bugs we haven't seen yet.
We hope that the 2.0 release will be much more static and have a greater degree of consistency between modules, but 2.0 is likely a ways off.
My advice would be: if you would use Extlib, use Batteries. It has absorbed Extlib's feature set (indeed, most of its code), and fleshes it out quite a bit. If you find bugs, please report them :).