OCaml is an excellent general purpose programming language. Every programmer who deals with it always comes to the same conclusion:
"if it compiles, it works"
Unlike with other well-known programming languages, like C/C++ or Perl/PHP, with OCaml you know that you are almost finished when you can compile your program, because OCaml is statically type checked. The type constraints allow for a deep verification at compile-time of your program.
Types in OCaml are very important. Even for the object-oriented part of the language, you are able to program in a way where the meaning of your program is almost entirely contained in its types. This kind of programming scheme needs special training, and OCamlCore is here to help you acquire this skill set.
Types are strong in OCaml: you cannot dynamically cast them, unlike in C++. You don’t need to embed type information, as in the slow C++ RTTI, and you get a fully efficient and strongly typed language.
With OCaml you are really going to enjoy strong type checking at compile time.