Salut,
OCaml est un bon langage pour commencer.
La communauté francophone est importante, ce qui est certainement une bonne chose, et tu as pas mal de projets ou librairies intéressantes.
Il compte de nombreuses applications pratiques (programme pour avion, etc…). Il est particulièrement bon pour manipuler des arbres syntaxiques (en interprétation et compilation).
De plus il possède encore quelques primitives impératives, ce qui peut rendre la transition plus aisée pour un débutant.
Haskell est plus dur à maîtriser. C’est un langage très bien pensé, et sa communauté est immense, en revanche elle est majoritairement anglophone. De plus il contient moins d’applications industrielle - à ma connaissance - que OCaml. En revanche si tu passes le baptême du feu et que tu comprends tout, tu auras beaucoup progressé. Il a poussé la logique fonctionnelle jusqu’au bout et c’est une petite merveille d’abstraction.
Erlang je ne le recommande pas. Le compilateur vomit des messages d’erreurs cryptique. C’est très aride pour un débutant et très difficile de progresser. La communauté est plus petite que pour les deux langages précédents, car c’est un langage plus spécialisé. En plus il a des défauts atroces dans sa syntaxe et pas mal de choix de conception étranges ou bancals.
C’est un langage qui avait été pensé pour la programmation concurrente. Il est très bon dans cette application (un des meilleurs, si ce n’est le meilleur). Mais je le conseille à des gens qui connaissent déjà le fonctionnel, et qui veulent découvrir la programmation concurrente. Le modèle acteur est un paradigme assez différent de ce à quoi tu peux être habitué, et qui est quelque peu différent du paradigme fonctionnel aussi.
Bref, essaie OCaml ou Haskell. Au final, ça n’a pas trop d’importance tu pourras toujours apprendre l’autre plus tard.
Les deux autres que tu cites (ReasonML et Elixir) je ne les connais pas.