Подтвердить что ты не робот

Внедрение функционального программирования в Perl

Я пытаюсь выучить чистый функциональный язык программирования, такой как Haskell, как я из фона Perl, и прочитать, что Perl может также реализовывать методы функционального программирования. Поэтому было задано несколько вопросов:

Стоит ли делать это в Perl 5? Будет ли Perl 6 иметь значение? Кто-нибудь может предложить некоторые примеры кода, реализующие методы функционального программирования в Perl?
4b9b3361

Ответ 2

perl6 все еще работает, поэтому даже если perl6 значительно улучшил поддержку функционального программирования на уровне языка (см. perlgeek.de on currying in perl6, например), вы, вероятно, захотите начать сейчас с perl5, чтобы вы могли работать с тем, что там было. Я рекомендую смотреть в cpan для поддержки библиотеки более высокого уровня... Array:: Utils и другие (там много!)

Ответ 3

Функциональное программирование - это просто программирование, вы можете сделать это на любом языке. Если вам нравится, как выкладывается 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" работать внутри программы, предназначенной для более функционального потока управления.

Ответ 4

Вероятно, немного поздно для вечеринки, но эта маленькая книга - очень хороший пример внедрения технологий функционального программирования в Perl: http://billhails.net/Book/

Автор строит интерпретатор схемы в perl 5 с нуля (и BTW - это чистое золото).