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