Comme le choix du "premier langage de programmation", le choix du "premier langage fonctionnel" n’est pas si fondamental que ça. Ce n’est pas parce que tu en prends un maintenant que tu n’iras pas voir ailleurs plus tard, et il y a plusieurs façons différentes de découvrir le sujet.
Ceci étant dit, comme pour le premier langage de programmation, certains langages s’y prêtent mieux que d’autres. Tu as entendu parler d’OCaml : c’est un très bon choix.
Haskell est également possible, mais la courbe d’apprentissage est plus rude, et c’est un langage qui demande d’avoir à peu près compris plusieurs concepts qui seront assez nouveaux pour toi avant de pouvoir comprendre un peu ce qu’on fait. Ce n’est en aucun cas impossible, mais ça peut paraître moins accueillant.
Erlang est un langage très amusant à découvrir, mais ce n’est probablement pas le meilleur choix pour découvrir le fonctionnel : l’intérêt du langage, c’est la programmation concurrente. Je ne suis pas sûr que ce soit une excellente idée d’attaquer les deux domaines de front avant d’avoir au moins une petite idée de comment l’un des deux marche.
Scala, pourquoi pas. Ça tourne sur la JVM, ce qui a des avantages qui ne te concernent pas pour l’apprentissage du fonctionnel, et des inconvénients qui vont t’embêter un peu, mais rien de dramatique (essentiellement le fait d’être "pollué" par les besoins de l’écosystème Java plutôt que d’avoir une base fonctionnelle vierge).
Clojure, à la rigueur. C’est un langage de la famille des Lisp, qui est un peu incontournable dans le paysage et l’historique des langages de programmation. Il tourne aussi sur la JVM. J’aurais plutôt envie de te conseiller un langage typé (parce que le typage statique fort et sûr va de paire avec l’utilisation des langages fonctionnels de nos jours, et que c’est quelque chose qu’on gagne vraiment à découvrir et à manipuler), mais si c’est ça qui te branche, tu peux essayer. Dans la même famille, il y a Common Lisp (qui vieillit un peu quand même) et Scheme (qui est parfaitement respectable) par exemple.
Par contre, je déconseillerais franchement Kotlin. C’est essentiellement un Java qui a décidé d’être moins stupidement verbeux, mais ce n’est vraiment pas le meilleur langage pour découvrir le style fonctionnel, qui est très peu mis en valeur et de façon assez étrange. Pour un langage de "tous les jours" pour quelqu’un qui veut faire du Java en moins moche (ou pour n’importe qui qui se sent bien avec – ce qui n’est pas mon cas, mais qui pourrait être le tien), pourquoi pas, mais pour découvrir un nouveau style de programmation, c’est un assez mauvais choix.
Tu parles de besoin de bibliothèques et d’un framework web : j’imagine que tu as très envie de pouvoir faire des choses avec ton nouveau langage, mais ça ne doit pas être ta priorité pour l’instant. L’important, c’est d’apprendre de nouvelles idées et un nouveau point de vue sur la programmation qui enrichira ta manière d’approcher des problèmes. Savoir comment on écrit un site web avec un langage précis, ça viendra plus tard. Quoiqu’il en soit, sache que tous les langages cités ont un framework web sérieux.
Par contre, la question de la communauté est plus importante, parce que tu auras des questions auxquelles tu voudras des réponses. OCaml a une communauté petite mais assez active, y compris francophone. Tu auras de l’aide facilement, y compris sur ZdS où on est plusieurs à programmer avec. Je ne connais pas trop les communautés des autres langages, mais je crois que celle de Haskell est assez active aussi (peut-être moins en français ?), et j’ai vu passer quelques messages ici, donc tu devrais pouvoir trouver de l’aide aussi. Scala et Clojure ont, je crois, des communautés assez grosses, mais je ne les ai jamais vraiment fréquentés. En tout cas, je n’ai pas de souvenir de discussions ici sur ces langages.