Есть ли какой-нибудь всеобъемлющий справочник/кукбук, содержащий функциональные версии базовых алгоритмов? Какой-нибудь функциональный аналог «алгоритмов на c++» Седжвика.
Т.е. что-нибудь такое, разбору чего можно было бы вдумчиво посвятить некоторое время и потом знать, что на ровном месте не влипнешь в какие-нибудь дурацкие нубские переделки.
Важно
1) Иметь разбор влияния на производительность. Как с точки зрения самого алгоритма, так и нижележащей реализации «машинок» стандартной библиотеки.
По поводу алгоритма совсем хорошо было бы видеть формальное доказательство сложности или что-то такое, чтобы прочувствовать его дух.
Подразумеваются такие алгоритмы, которые написаны держа в уме оптимизацию по перфомансу, а не только и не столько по человекочитаемости.
2) Интересны варианты при отсутствии в движке (копиляторе, vm, итп) встроенной оптимизации хвостовой рекурсии, и долгой рекурсии как таковой (глубина вложенности, время исполнения).
3) Язык предпочтительно - лисп с минимумом извращенных ридеров. Ну или что-нибудь другое адекватное, легко переносимое на другие синтаксисы.
Хорошо если автор этого гипотетического справочника болел бы JVM (clojure, scala, groovy, java8) и приводил бы детали реализации на чем-то из этого, и мог бы сказать что-то по поводу нижележащей реализации на JVM.
На самый край подойдут извращения в виде Java8 или Java7+FunctionalJava, или PHP с замыканиями.