Ответ 1
Считать Perl более высокого порядка. Вы можете купить его или скачать бесплатно. Он дает представление даже опытным программистам на Perl.
Я пытаюсь выучить чистый функциональный язык программирования, такой как Haskell, как я из фона Perl, и прочитать, что Perl может также реализовывать методы функционального программирования. Поэтому было задано несколько вопросов:
Считать Perl более высокого порядка. Вы можете купить его или скачать бесплатно. Он дает представление даже опытным программистам на Perl.
perl6 все еще работает, поэтому даже если perl6 значительно улучшил поддержку функционального программирования на уровне языка (см. perlgeek.de on currying in perl6, например), вы, вероятно, захотите начать сейчас с perl5, чтобы вы могли работать с тем, что там было. Я рекомендую смотреть в cpan для поддержки библиотеки более высокого уровня... Array:: Utils и другие (там много!)
Функциональное программирование - это просто программирование, вы можете сделать это на любом языке. Если вам нравится, как выкладывается API Haskell, вам может понравиться мой модуль Data:: Monad, который предоставляет роли Moose для различных классов Haskell, включая Monad. (В отличие от Haskell, однако, в моей Монаде нет "неудачи", и все Монады - это Функторы.)
Здесь приведен пример реализации различных типов в контексте структуры данных, которая обрабатывает успех или сбой (например, Control.Monad.Error):
http://github.com/jrockway/data-monad/blob/master/t/error.t
Обратите внимание, что у него есть возможность конвертировать обычные вычисления Perl, которые могут завершиться с исключением из чистой процедуры, которую вы можете использовать bind
для других процедур. Это позволяет "регулярному Perl" работать внутри программы, предназначенной для более функционального потока управления.
Вероятно, немного поздно для вечеринки, но эта маленькая книга - очень хороший пример внедрения технологий функционального программирования в Perl: http://billhails.net/Book/
Автор строит интерпретатор схемы в perl 5 с нуля (и BTW - это чистое золото).