Sha256: 8944f0da91ae094b4a5dbbc150dca89713cfc52d6591ebee66661d8d3f5659a2

Contents?: true

Size: 573 Bytes

Versions: 73

Compression:

Stored size: 573 Bytes

Contents

package ListOps;

use strict;
use warnings; 

sub map { 
   my ($func, $list) = @_;

   my @result; 
   foreach my $elem (@$list) {
      push @result,
         $func->($elem);
   }

   return \@result; 
}

sub reduce {
   my ($func, $list) = @_;
   
   my $result = shift @$list;
   foreach my $elem (@$list) {
      $result = $func->($result, $elem);
   }

   return $result;
}

sub length {
   my $list = shift; 
   
   return _length($list, 0);
}

sub _length {
   my ($list, $n) = @_; 

   return _length($list, $n + 1) 
      if shift @$list;
   
   return $n;
}

1;

Version data entries

73 entries across 73 versions & 1 rubygems

Version Path
trackler-2.2.1.119 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.118 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.117 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.116 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.115 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.114 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.113 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.111 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.110 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.109 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.108 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.107 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm
trackler-2.2.1.106 tracks/perl5/exercises/list-ops/.meta/solutions/ListOps.pm