I'm of the opinion that functional languages (and even just languages with strong type systems) are only useful insofar as the people using them are "cooperative" with those features. If you write ocaml as if it were Python (and if your total FP experience is a 2-week ocaml bootcamp, what else can you do?) rather than actually designing your project in a way that eg takes advantage of the strong type system to prevent invalid program states, the advantages dwindle.