summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xperl/p6.pl29
1 files changed, 29 insertions, 0 deletions
diff --git a/perl/p6.pl b/perl/p6.pl
new file mode 100755
index 0000000..74ebbef
--- /dev/null
+++ b/perl/p6.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+
+use strict;
+use warnings;
+
+use List::Util qw(reduce);
+
+my ($sum_of_squares, $sum);
+
+# Functional
+sub iter {
+ my ($sum_of_squares, $sum) = @{+shift};
+ my $n = shift;
+ $sum_of_squares += $n**2;
+ $sum += $n;
+ return [$sum_of_squares, $sum];
+}
+
+($sum_of_squares, $sum) = @{+reduce { iter($a, $b) } [0, 0], (1..100)};
+print $sum_of_squares - ($sum**2), "\n";
+
+$sum_of_squares = 0;
+$sum = 0;
+# imperative
+for my $n (1..100) {
+ $sum_of_squares += $n**2;
+ $sum += $n;
+}
+print $sum_of_squares - ($sum**2), "\n";