Я бы интерпретировал то, что вы спрашиваете, как «Функции высшего порядка (отображение, уменьшение, фильтрация, ...) и неизменяемые структуры данных (кортежи, списки минусов, записи, карты, множества, ...) общий для языков FP? " и я бы сказал, абсолютно да.
Как вы говорите, у ООП есть хорошо известные столпы (инкапсуляция, наследование, полиморфизм). Я бы сказал, что «столпами» функционального программирования являются: 1) использование функций в качестве первоклассных значений и 2) выражение себя без побочных эффектов.
Скорее всего, вы найдете общие инструменты для применения этих идей на разных языках FP (F # - отличный выбор, кстати!), И вы увидите, что они находят свой путь к более распространенным языкам; может быть в менее узнаваемой форме (например, LINQ's Select = map, Aggregate = Reduce / Fold, Where = filter, C # имеет облегченный лямбда-синтаксис, System.Tuple и т. д.).
Кроме того, вещь, которая, как правило, отсутствует в языках, не являющихся явно FP, - это хорошие неизменяемые структуры данных и поддержка синтаксиса для них (не просто библиотеки), что затрудняет соблюдение компонента №2 в тех языки. Списки F #, записи, кортежи и т. Д. Являются хорошими примерами отличной поддержки языка и библиотеки для этого.