Eu costumava recomendar que, para aprender programação funcional, deve-se aprender Haskell. Hoje em dia, acho que esse conselho não é tão bom. A razão pela qual Haskell é difícil é por causa do sistema de tipos massivo, não porque é funcional. Um caminho melhor para a programação funcional seria um derivado de ceceio como Racket ou Clojure. Dessa forma, você se concentra na recursão e nos padrões de design funcionais, em vez do sistema de tipos. (Eu ainda acho que todos deveriam aprender Haskell em algum momento, tanto para o sistema de tipos quanto para o aspecto de programação funcional). Dado que a IA escreverá a maior parte do código no futuro, parece-me que a habilidade de um programador é especificar rigorosamente qual comportamento é esperado e, em seguida, deixar que a IA cuide disso. Haskell é uma das principais linguagens para especificações rigorosas. Também algumas histórias divertidas sobre mim: usei Clojure na produção em um ponto simplesmente porque podia e estava entediado com as linguagens comuns. Eu era basicamente indescritível, então meu chefe teve que concordar com isso, embora ele estivesse (com razão) cético sobre o uso de uma linguagem impossível de contratar. Sim, eu era esse programador antes.
3,05K