Моя лучшая рекомендация для таких, как вы (предположительно со статически набранным, ОО, императивным фоном): Scala . Scala - это императивно-функциональный гибрид с лучшей поддержкой ОО, чем Java и большинство других языков вокруг. Scala компилируется в байт-код JVM (также поддерживается .net, хотя и используется гораздо реже) и обеспечивает совместимость с Java, не имеющую аналогов среди языков JVM, не относящихся к Java. Я использую Scala в моем компиляторе и считаю написание кода Scala исключительно забавным и приятным. Лучший ресурс для изучения Scala - это Программирование на Scala , написанное самим разработчиком языка.
Если вы не хотите использовать гибридный язык и вместо этого предпочитаете прыгать в схватку с FP, я бы пошел с Haskell. Хаскель - чисто функциональный язык; нет (первого класса) понятия изменчивости или эффекта. Мой любимый ресурс на Haskell - остроумный Learn You a Haskell для большого блага! . На самом деле, я настоятельно рекомендую прочитать некоторые из LYAH независимо от того, намереваетесь ли вы пойти с Haskell или нет, так как это фантастическое введение в мир статически типизированных FP. Я бы начал читать его еще до того, как подумать о выборе языка.
Надеюсь, этот ответ был полезен.