File Coverage

blib/lib/Data/Monad/List.pm
Criterion Covered Total %
statement 34 35 97.1
branch 1 2 50.0
condition n/a
subroutine 15 16 93.7
pod 12 12 100.0
total 62 65 95.3


line stmt bran cond sub pod time code
1             package Data::Monad::List;
2 9     9   30509 use strict;
  9         20  
  9         236  
3 9     9   48 use warnings;
  9         15  
  9         241  
4 9     9   42 use Exporter qw/import/;
  9         16  
  9         313  
5 9     9   44 use base qw/Data::Monad::Base::MonadZero/;
  9         17  
  9         5412  
6              
7             our @EXPORT = qw/scalar_list list_unit list_zero list_flat_map_multi
8             list_map_multi list_sequence/;
9              
10 64     64 1 2065 sub scalar_list(@) { __PACKAGE__->new(map { [$_] } @_) }
  123         371  
11              
12 1     1 1 16 sub list_unit { __PACKAGE__->unit(@_) }
13 0     0 1 0 sub list_zero { __PACKAGE__->zero(@_) }
14 1     1 1 14 sub list_flat_map_multi(&@) { __PACKAGE__->flat_map_multi(@_) }
15 1     1 1 14 sub list_map_multi(&@) { __PACKAGE__->map_multi(@_) }
16 1     1 1 15 sub list_sequence { __PACKAGE__->sequence(@_) }
17              
18             sub new {
19 264     264 1 1500 my $class = shift;
20 264         1471 bless [@_], $class;
21             }
22              
23             sub unit {
24 108     108 1 548 my $class = shift;
25 108         310 $class->new([@_]);
26             }
27              
28             sub zero {
29 8     8 1 57 my $class = shift;
30 8         18 $class->new();
31             }
32              
33             sub flat_map {
34 79     79 1 125 my ($self, $f) = @_;
35 79         186 (ref $self)->new(map { @{$f->(@$_)} } @$self);
  177         195  
  177         518  
36             }
37              
38             sub values {
39 11     11 1 19 my $self = shift;
40 11         38 @$self;
41             }
42              
43             sub scalars {
44 10     10 1 17 my $self = shift;
45             map {
46 10 50       32 @$_ == 1 or die "contained multiple values.";
  58         127  
47 58         157 @$_;
48             } $self->values;
49             }
50              
51             1;
52              
53             __END__