Salut,
Tu connais déjà un peu la programmation fonctionnelle ou pas du tout ?
Car ce sont deux langages d'un autre paradigme, différent de l'impératif et de l'orienté objet que tu connais certainement (je met de côté le fait qu'on peut faire de l'impératif et de l'OO avec Ocaml).
Ces langages apportent une nouvelle manière de penser, plus structurelle, et ce aussi aussi bien pour tes données que pour tes algorithmiques.
Ce sont des langages bien plus utilisés dans les milieux académiques qu'industriels (malheureusement), même si certaines boites commencent à s'y mettre.
Si tu décides d'apprendre un de ces langages, essaye de te concentrer sur les nouveaux concepts principaux : types inductifs, lambda abstraction, application defonctions, fonction d'ordre supérieur, ..., ...
Les bénéfices sont très important en terme d'abstraction. La programmation fonctionnelle est géniale pour les problèmes qui demandent de manipuler des objets abstraits, syntaxiques.
C'est par exemple une classe de langage très intéressant pour écrire des compilateurs.
D'un point de vue pratique, tu peux choisir l'un ou l'autre. Haskell est britannique, Ocaml est français, mais la philosophie est sensiblement la même.
N'hésites pas à demander plus de précisions si tu as besoin.