我正在尝试学习像Haskell这样的纯函数式编程语言,因为我来自Perl背景,并且读到Perl也可以实现函数式编程技术。很少有人提出这样的问题:
答案 0 :(得分:47)
阅读Higher-Order Perl。您可以buy it或download for free。它甚至为经验丰富的Perl程序员提供了见解。
答案 1 :(得分:6)
perl6仍然是一项正在进行中的工作,所以即使perl6在语言级别上对函数式编程有很多改进的支持(例如,参见perlgeek.de on currying in perl6),你可能现在想要从perl5开始,所以你可以开始使用那里的东西。我建议调查cpan以获得更高级别的库支持... Array :: Utils和其他(有很多!)
答案 2 :(得分:5)
功能编程只是编程,你可以用任何语言编写。如果您喜欢Haskell API的布局方式,您可能会喜欢我的Data :: Monad模块,该模块为包括Monad在内的各种Haskell类型类提供Moose角色。 (与Haskell不同,我的Monad中没有“失败”,所有Monads都是Functors。)
以下是在处理成功或失败的数据结构(如Control.Monad.Error)的上下文中运行各种类型类的示例:
http://github.com/jrockway/data-monad/blob/master/t/error.t
请注意,它能够将可能因异常而失败的常规Perl计算转换为可以bind
到其他过程的纯过程。这使得“常规Perl”可以在一个旨在实现更多功能控制流程的程序中工作。
答案 3 :(得分:0)
可能有点晚了,但这本小书是在Perl中实现函数式编程技术的一个很好的例子:http://billhails.net/Book/
作者从头开始在perl 5中构建一个计划解释器(并且BTW的推荐书是纯金)。