Какие впечатляющие примеры функционального кода?

Мне немного надоело писать код для многоядерности, если я хочу больше скорости, особенно когда я просто пишу одноразовый script. У моего dev-бокса уже есть 8 ядер, и это число растет намного быстрее, чем тактовая частота. Функциональные языки, похоже, предлагают потенциальный выходной люк, но я еще не предпринял попыток освоить один из них.

Мне бы хотелось увидеть некоторые фрагменты кода реального мира, которые намного лучше и/или более параллельны, чем нефункциональные альтернативы. Я не придирчивый к языку - меня больше интересуют понятия.

Спасибо!

Ответ 1

Это (длинное, но очень хорошее) видео дает как ввод F #, так и убедительную демонстрацию того, насколько легко распараллелить код на языке:

http://channel9.msdn.com/pdc2008/TL11/

Ответ 2

Как насчет MapReduce? Он невероятно параллелизуется и даже несмотря на то, что он не реализован на функциональных языках, насколько это касается бумаги, она вдохновлена ​​Lisp map и reduce.

Ответ 4

В расширенном примере текстового индексатора/искателя, использующего mapreduce в главе 20 ( "Программирование многоядерных процессоров" ) Программирование Erlang, Я не знаю, насколько впечатляюще это, но похоже, что смертные кода могут писать.

Ответ 5

LINQ - хороший пример функционального программирования на основных языках. Обоснованный код и монады? В MY С#?:) В любом случае, w.r.t. threading, там упоминается Parallel LINQ. Используя функции неизменности и более высокого порядка (и, возможно, выражение), библиотеки могут распараллелить нам вещи.

И еще одна ссылка на F # с асинхронные рабочие процессы. Какая впечатляющая возможность использовать код синхронизации, и с помощью нескольких небольших аннотаций превращает его в асинхронный код. Код сохраняет много необходимых качеств. Вам не нужно полностью менять вещи, чтобы воспользоваться этим; компилятор через все обрабатывает.

Ответ 7

Мой учитель шутил, что самым большим примером функционального кода является код, который не написан.