aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCY Fung <fungcheokyin@gmail.com>2022-06-27 23:25:12 +0800
committerCY Fung <fungcheokyin@gmail.com>2022-06-27 23:25:12 +0800
commit43b76abbd0ba488c396459014495263687d24207 (patch)
treec5dd7153d2df7fa2f6cc38d2cf1d25bcb0b227e1
parent6fa0bc0bca91dc93602d71fce4da2a21e2dc1619 (diff)
downloadperlweeklychallenge-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.pl55
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;