Ogólnie rzecz biorąc, używaj języka, w którym najłatwiej jest opisać rozwiązanie problemu. W przypadku programowania funkcjonalnego jest to sytuacja, w której rozwiązanie problemu można łatwo wyrazić za pomocą funkcji , stąd nazwa. Ogólnie jest dobry do operacji matematycznych, sztucznej inteligencji, dopasowywania wzorców; ogólnie wszystko, co można podzielić na zestaw reguł, które należy zastosować, aby uzyskać odpowiedź. Dopiero po dostatecznym przeanalizowaniu problemu można naprawdę określić „najlepszy” język. Tutaj z pomocą przychodzi pseudokod. Jeśli zauważysz, że piszesz pseudokod, który wygląda jak FP, użyj FP.
Oczywiście wszystkie kompletne języki programowania są funkcjonalnie równoważne, więc tak naprawdę nie ma znaczenia, który wybierzesz pod względem problemów, które możesz rozwiązać. Główne efekty będą dotyczyły wydajności i dokładności kodowania oraz łatwości konserwacji.
Zauważ również, że możliwe jest naśladowanie FP w językach OO poprzez sprytnie zaprojektowane API. Na przykład, widziałem wiele bibliotek Java (jednym z przykładów jest JMock), które używają łańcuchów metod do symulacji FP DSL. Następnie zobaczysz konstrukcje, takie jak:
logger.expects(once()).method("error")
.with( and(stringContains(action),stringContains(cause)) );
To zasadniczo tworzy funkcję, która jest oceniana w celu określenia, czy jakaś sekwencja wywoływania na obiekcie pozorowanym jest poprawna. (przykład skradziony z http://www.jmock.org/yoga.html )
Inną składnią podobną do FP w innych językach OO jest użycie domknięć, na przykład w Rubim.