I am learning Ocaml by trial and error. I have decided to drop Durin development in Perl and I have migrated most of it to Ocaml refactoring some pieces for consistency. That way ODurin has been born.
Hacking Ocaml provided me mixed feelings. From Ruby, I have noticed a lack of commodity, that turns out in more time developing for the same task. IMHO Ruby is the best programming language I have tried yet. A pitty the interpreter/compiler is not more efficient. Apart from that, I like Ocaml. I feel like there are two kind of languages: C, C++ or Java make it difficult to refactor and freeze your design. Perl is somewhere inbetween. Ocaml and Ruby allow you to quickly modify your design. This means that a single developer can maintain a much bigger project with dynamic specs in Ocaml than in C. Since in research programming specs change a lot. I have decided to stick with Ocaml for a while.
And Ocaml is efficient!!! It really is!!
I have integrated Ocaml with the NTL package using Swig. I spent a whole day until I found out that C++ references are not that simple to work with in the Ocaml-C++ Swig interface and I dropped them all to use pointers.