Какие методы или парадигмы, обычно ассоциируемые с функциональными языками, могут продуктивно использоваться и в императивных языках?
например:.
- Рекурсия может быть проблематичной в языках без оптимизации хвостового вызова, ограничивая ее использование узким набором случаев, поэтому она имеет ограниченную полезность
- Карта и фильтр нашли свое применение в нефункциональных языках, даже при том, что они имеют функциональный вид
Мне действительно нравится не беспокоиться о состоянии в функциональных языках. Если бы я был особенно упрям, я мог бы писать программы на C без изменения переменных, только заключая в капсулу мое состояние в переменных, передаваемых в функции, и в значениях, возвращаемых из функций.
Несмотря на то, что функции не являются значениями первого класса, я могу заключить их в объект в Java, скажем, и передать их в другой метод. Как и функциональное программирование, просто веселее.
Итак, для ветеранов функционального программирования, когда вы программируете на императивных языках, какие идеи из FP вы успешно применили?