@{$_[0]}
}
+sub _flatten_deep {
+ my @array = @_;
+ my $depth = CORE::pop @array;
+ --$depth if (defined($depth));
+
+ CORE::map {
+ (ref eq 'ARRAY')
+ ? (defined($depth) && $depth == -1) ? $_ : _flatten_deep( @$_, $depth )
+ : $_
+ } @array;
+
+}
+
+sub flatten_deep {
+ my ($array, $depth) = @_;
+ [ _flatten_deep(@$array, $depth) ];
+}
+
## Junctions
sub all {
=item B<flatten>
+=item B<flatten_deep ($depth)>
+
=back
=head2 Indexed implementation