I was playing with something very similar to
this but it wasn't coming out right. I gave
up after an hour or so to go tackle another
problem that didn't get solved (bike repair).
sub foo{
my $F= shift;
@G = @_ ? @{foo(@_)} : [] x scalar @$F;
foreach my $e (@$F){
push @H, map {[unshift @{$_}, "$e($i)"]} @G;
}
\@H;
}