Давайте «плясать» от определений.
Парадигма — набор принципов и подходов при написании программы.
Программа, написанная в парадигме императивного программирования представляет собой по сути набор приказов компьютеру: создай и инициализируй переменную, сложи/умножь(и т.д.) ее значение с результатом вызова функции и т.д. Сюда же можно добавить циклы, ветвления и другие конструкции.
Объектно-ориентированное программирование (ООП) относится к множеству императивных парадигм.
Функциональное программирование зиждется не на приказах, а на декларациях, т.е. в парадигме функционального программирования описывается (декларируется) проблема и ожидаемое решение проблемы, результат.
Примеры деклараций и приказов можно найти и в обычной жизни. Когда вы просите сына сходить в магазин за хлебом – это императивный подход, а когда теща говорит зятю: «Как хочешь, крутись, но хочу быть похоронена в кремлевской стене», - это декларативное пожелание. Граница между декларацией и приказом нечеткая. Например, что это, декларация или приказ? - из фильма Snatch:
Но есть некоторые признаки функционального программирования:
Получается, что для того, чтобы на C# программировать не императивно, а функционально, достаточно просто перестать использовать переменные, т.е. добровольно отказаться от промежуточного состояния. Зачем и когда это надо? – вопрос, конечно интересный. Решение некоторых задач с помощью функционального программирования выглядит действительно красиво. Например, так выглядит решение задачи расчета факториала на чисто функциональном языке Haskell:
На C# это будет выглядеть, наверное, так:
Но, для хоть сколь-нибудь крупных проектов отказ от промежуточных состояний – это добровольный отказ от комфортного поиска ошибок, что, на мой взгляд –непрактично. Думаю, именно с точки зрения практичности c# занимает 5 строчку в рейтинге популярности языков, а Haskell – 45 строчку.
Резюме:
В c# есть много чего интересного от функционального программирования: делегаты, рекурсии, лямбда-выражения,- но есть и много других полезных конструкций, от которых не стоит отказываться.