Для развития кругозора - Common Lisp и Haskell.
Этот вопрос основан на популярном заблуждении, что всё ещё можно говорить об "императивных" языках программирования, "функциональных" или каких-либо ещё.
Уже лет десять как не существует отдельных "функциональных языков программирования", с того момента как во всех мейнстримных языках появились лямбда-выражения, или анонимные функции, или даже вообще замыкания.
Забудьте эту фразу.
Существует функциональный подход к разработке программ, парадигма, если хотите. Он поддерживается буквально всеми основными игроками на рынке - C++, C#, Java, Javascript, PHP, Ruby, Python, Rust, Go, даже в C11 вы можете использовать функции высших порядков и избегать разрушающего присваивания. Не слушайте пуристов, которые будут вам петь про tail call optimization, в 2021 году всем плевать.
Те языки, которые я упомянул, несмотря на то, что считаются традиционно "функциональными", на самом деле оба тоже относятся к языкам программирования общего назначения. Вы можете писать код на них в любой парадигме. На Common Lisp - буквально в любой, включая те, которые выдумаете сами.