Creo que el problema con OCaml es que no es demasiado útil "fuera de la caja". La razón eventual por la que las personas usan un idioma es porque tiene bibliotecas que necesitan. Sin embargo, sin nada "listo para usar", nadie se adentra lo suficiente en un proyecto para darse cuenta de que necesita escribir una biblioteca. El resultado es un lenguaje sin bibliotecas, lo que dificulta la escritura de "aplicaciones reales".
Creo que esto es lo que sufre OCaml: nadie se molesta en comenzar "proyectos reales" porque todo lo que hay es un lenguaje de programación. Sí, puedo agregar dos y dos e imprimir el resultado. El resultado es una colección de bibliotecas que son principalmente abandonware académico (el autor obtuvo su doctorado y siguió adelante), lo que no es demasiado útil para los programadores en ejercicio.
(Sé que se está trabajando para cambiar esto, con proyectos como "Baterías incluidas". Vuelva aquí en 5 años, y quizás OCaml sea más popular).
Hay algunas excepciones a esta regla. Java comenzó sin bibliotecas, pero Sun pagó a la gente para que las escribiera todas en casa, y luego lo comercializaron. Certificación de Java, hardware específico de Java, libros de Java, clases de Java, etc. Luego, incluso convenció a la mayoría de las universidades para que lo enseñen exclusivamente, a pesar de que no es un muy buen lenguaje para la programación de aprendizaje.
El resultado fue la popularidad. El dinero puede resolver muchos problemas.
En el campo del lenguaje funcional, podemos ver que Haskell se está volviendo bastante popular. Creo que la mayor parte de la popularidad se debe a personas como dons que escriben bibliotecas útiles y nunca dejan de comercializar el idioma. Todos los días ves algunos artículos de Haskell sobre Programación Reddit. Esto lo mantiene atascado en la mente de las personas hasta que finalmente deciden: "Voy a probar Haskell". Cuando lo hacen, ven cosas útiles como marcos web, bases de datos de objetos, bibliotecas OpenGL y bibliotecas de procesamiento XML. Esto significa que en realidad pueden hacer algo útil "en este momento". Entonces, entre el potencial para ser productivo y escuchar mucho sobre esto, Haskell ha ganado mucha popularidad.
CL tiene muchas de las mismas bibliotecas que Haskell y es casi tan rápido, pero nadie habla de eso, por lo que "se siente muerto". De hecho, #lisp es mucho más silencioso que #haskell, pero Lisp sigue siendo un lenguaje muy productivo con muchas bibliotecas. Ningún otro idioma tiene SLIME. Pero el marketing es muy importante, y Haskell lo hace mejor que Lisp u OCaml (y compite por la misma base de usuarios).
Finalmente, algunas personas nunca "obtendrán" la programación, por lo que romper su modelo mental (las variables son cuadros con valores, el código se ejecuta de arriba a abajo) asegurará que no usen su lenguaje. Este tipo de programador es un gran porcentaje de la población de programación, por lo que esto limita aún más la posible base de usuarios de lenguajes abstractos como Lisp, Haskell y OCaml.