in reply to A "Fun"ctional Attempt
Hello withering,
It should be noted that the code is not so strict since it assumes the existence of local variables.
Package global variables, actually. And it’s easy to make it work under strict:
use strict; use warnings; use HOI::Comprehensions; use HOI::Match; sub slowsort { HOI::Match::pmatch ( 'nil' => sub { [] }, 'pivot :: unsorted' => sub { our ($x, $unsorted, $pivot); my $left = HOI::Comprehensions::comp( sub { $x }, x => $u +nsorted )->( sub { $x <= $pivot } ); my $right = HOI::Comprehensions::comp( sub { $x }, x => $u +nsorted )->( sub { $x > $pivot } ); return [ @{slowsort($left->force)}, $pivot, @{slowsort($ri +ght->force)} ]; }, )->(@_) } my $res = slowsort [3, 4, 1, 2, 5, 6]; print @$res, "\n";
Output:
19:35 >perl -c 1262_SoPW.pl 1262_SoPW.pl syntax OK 19:37 >perl 1262_SoPW.pl 123456 19:37 >
I see from that you are the author of the HOI::Comprehensions and HOI::Match modules. For the benefit of those of us who don’t know as much as we’d like about functional programming, perhaps you could give some explanation of what the code is doing, and of its advantages over equivalent code written in the imperative or object oriented paradigms?
Thanks,
| Athanasius <°(((>< contra mundum | Iustus alius egestas vitae, eros Piratica, |
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: A "Fun"ctional Attempt
by withering (Monk) on Jun 04, 2015 at 13:59 UTC |