I have been programming in F# for a decade and in that time I have found that when I am working within the purely functional aspects, ie. the ML lambdas, tuples, generics, etc, that everything is beautiful and consistent, and development proceeds at an order of magnitude faster than in, say, C# or Java.
However, as soon as I start using objects, with class hierarchies, constructors, polymorphism, etc, I find that I am repeatedly stopping to think about how to do things in the language, and that, overall, the development and thought process is about the same as in C#. There are some advantages to using F#, but not as significant as with functional programming.
So, the only reason I have used objects in F# is when I am forced to, namely to work within a pre-existing object oriented "framework". I have done this with ASP.NET MVC, Windows Store Apps (Win 8.1), and Android. (And, quite successfully after some initial pain).
My questions are:
Did Caml become OCaml primarily to be able to interface with imperative OO languages, rather than because OO really improved the language?
Could I advise budding F# programmers to avoid the OO features until they need to interface with or extend an OO framework?
As an aside, I mention that in my early days with F# I posted a question in an F# forum asking whether I should prefer the functional or OO style of programming, and the answer was emphatic:"Prefer the functional!". Since then, I've come to ask why use the OO at all?