Загалом, використовуйте мову, якою найлегше висловити рішення проблеми. Для функціонального програмування це коли рішення проблеми легко виразити через функції , звідси і назва. Як правило, це добре для математичних операцій, AI, узгодження шаблонів; загалом усе, що можна розбити на набір правил, які необхідно застосовувати, щоб отримати відповідь. Ви можете реально визначити "найкращу" мову для використання лише після того, як проаналізували свою проблему в достатній мірі. Тут псевдокод стане в нагоді. Якщо ви виявите, що пишете псевдокод, схожий на FP, використовуйте FP.
Звичайно, всі повні мови програмування функціонально еквівалентні, тому насправді не має значення, яку з них ви виберете з точки зору того, які проблеми ви можете вирішити. Основні ефекти полягатимуть у ефективності та точності кодування та простоті обслуговування.
Зауважте також, що можна імітувати FP в межах мов OO за допомогою продуманих API. Наприклад, я бачив численні бібліотеки Java (JMock - один із прикладів), які використовують ланцюжок методів для імітації FP DSL. Тоді ви побачите такі конструкції, як:
logger.expects(once()).method("error")
.with( and(stringContains(action),stringContains(cause)) );
Це по суті створює функцію, яка обчислюється, щоб визначити, чи правильна якась послідовність викликів на макетному об'єкті. (приклад викрадено з http://www.jmock.org/yoga.html )
Іншим FP-подібним синтаксисом в інших мовах OO є використання замикань, таких як Ruby.