diff options
| author | CY Fung <fungcheokyin@gmail.com> | 2022-06-27 23:25:12 +0800 |
|---|---|---|
| committer | CY Fung <fungcheokyin@gmail.com> | 2022-06-27 23:25:12 +0800 |
| commit | 43b76abbd0ba488c396459014495263687d24207 (patch) | |
| tree | c5dd7153d2df7fa2f6cc38d2cf1d25bcb0b227e1 | |
| parent | 6fa0bc0bca91dc93602d71fce4da2a21e2dc1619 (diff) | |
| download | perlweeklychallenge-club-43b76abbd0ba488c396459014495263687d24207.tar.gz perlweeklychallenge-club-43b76abbd0ba488c396459014495263687d24207.tar.bz2 perlweeklychallenge-club-43b76abbd0ba488c396459014495263687d24207.zip | |
Wk 171 Task 2
| -rw-r--r-- | challenge-171/cheok-yin-fung/perl/ch-2.pl | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/challenge-171/cheok-yin-fung/perl/ch-2.pl b/challenge-171/cheok-yin-fung/perl/ch-2.pl new file mode 100644 index 0000000000..8a5e40c578 --- /dev/null +++ b/challenge-171/cheok-yin-fung/perl/ch-2.pl @@ -0,0 +1,55 @@ +#!/usr/bin/perl +# The Weekly Challenge 171 +# Task 2 First-class Function +use v5.30.0; +use warnings; + +sub compose { + my $f = $_[0]; + my $g = $_[1]; + return sub { + return $f->($g->(@_)); + } +} + + +sub multiply { + return sub { + my $prod = $_[0]*$_[1]; + return $prod; + } +} + + +sub add { + return sub { + my $sum = $_[0]+$_[1]; + return $sum; + } +} + + +sub inc { + return sub { + my $sum = $_[0]+1; + return $sum; + } +} + + +sub double { + return sub { + my $prod = $_[0]*2; + return $prod; + } +} + + + +use Test::More tests => 9; + +for (3..10) { + ok compose(double, inc)->($_) == double->(inc->($_)); +} + +ok compose(double, multiply)->(4, 25) == 200; |
