The OCaml GC imposes a global lock that prevents mutators (threads) from running in parallel although they can run concurrently (interleaved). I believe the same is true of SML/NJ and MLton but not PolyML, GHC, F#, Clojure and Scala.
What other functional language implementations allow threads to run in parallel?
I’m happy to tell you that you’re right and that F#, being based on the CLR, doesn’t suffer from that limitation at all, and instead benefits from multithreading specific features including async workflows, the mailboxprocessor, and the wonderful upcoming (.NET 4.0) Task Parallel Library.