10 comments

[ 4.9 ms ] story [ 29.6 ms ] thread
A huge project for turning OCaml into a truly usable development platform. I can't wait to test version 1.0.0 .
I love OCaml. But its standard library has always struck me as... less than perfect. Batteries is definitely a big improvement though.
The Bat* names strike me as a little odd. Does OCaml not have namespaces?
It's sort of .Net or Java-like. Each source file is its own module. However, when you open a module, you import everything into the current module.

You can also use dotted notation: Module.thing

The new module organization avoids collisions with existing libraries like Extlib while allowing you to link Batteries' modules selectively, thus decreasing the size of the generated executables.

For convenience, all the modules are also available under the Batteries namespace. In this case, however, all of Batteries' code will be included in the executable --- that's how OCaml's linker works at the moment.

For instance, if you only use BatList in your code (or do module List = BatList to refer to it with that name), only that module will be included in the binary; if you do

    open Batteries
and then refer to the module simply as List, all the other modules in the Batteries hierarchy will also be included in the binary.