use Moose;
use Method::Signatures::Simple;
use Data::Perl::Stream::Array;
+use Data::Perl::Collection::Set;
use Scalar::Util qw(weaken refaddr);
has _store => (is => 'ro', required => 1, init_arg => 'store');
Data::Perl::Stream::Array->new(array => $self->_member_cache);
}
+# theoretically inefficient except that if we're being asked this then
+# either the data should have been pre-loaded or we're going to get all
+# elements anyway
+
+method count {
+ scalar $self->flatten
+}
+
+method map ($sub) {
+ Data::Perl::Collection::Set->new(
+ members => [ map $sub->($_), $self->flatten ]
+ )
+}
+
method _set_caches ($members) {
$self->_set_member_cache($members);
$self->_set_key_cache_members($members);