in reply to Re^2: reduce like iterators
in thread reduce like iterators
Oops, adjusted:
my @b = @{ reduce { push @$a, $b if !@$a || $b ne $a->[-1]; $a } [], @ +a };
If one were to make a list version of reduce, the callback would need access to three variables: The list (say $_), the state (say $a), the current value (say $b). The problem could be solved as follows:
my @b = list_reduce { push @$_, $b if !@$_ || $b ne $_->[-1]; undef } +undef, @a; my @b = list_reduce { push @$_, $b if $a || $b ne $_->[-1]; 0 } 1, @a; my @b = list_reduce { push @$_, $b if defined($b) && $b ne $a; $b } un +def, @a; my @b = list_reduce { push @$_, grep defined && $_ ne $a, $b; $b } und +ef, @a;
(@a may not start with undef for the last two to work properly.)
Update: Added everything after the first block of code.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^4: reduce like iterators
by Anonymous Monk on Jan 09, 2024 at 08:28 UTC | |
by jdporter (Paladin) on Jan 09, 2024 at 14:05 UTC | |
by kcott (Archbishop) on Jan 09, 2024 at 14:50 UTC | |
by ikegami (Patriarch) on Jan 10, 2024 at 15:45 UTC | |
by jdporter (Paladin) on Jan 09, 2024 at 16:27 UTC | |
by kcott (Archbishop) on Jan 10, 2024 at 01:01 UTC | |
| |
|
Re^4: reduce like iterators
by LanX (Saint) on Jan 03, 2011 at 19:13 UTC | |
by ikegami (Patriarch) on Jan 03, 2011 at 19:18 UTC | |
by ikegami (Patriarch) on Jan 03, 2011 at 19:28 UTC |