Even though it doesn’t have all the features of OCaml, I think F# is an eminently practical substitute, considering that the CLR and Mono are both quite solid, battle-tested runtimes, and using F# gives you access to a large body of C# libraries.
Then again, there are a lot of things to like about OCaml. The compiler is fast, the error messages are good, there are some advanced type system features to improve the correctness and performance of your code, and (as with F#) you can freely mix imperative and functional features as you see fit.