[SP-pm] grep e map

Renato Santos renato.cron at gmail.com
Sun May 29 19:23:07 PDT 2011


ps: o que eu disse sobre performance pode ser equivoco pois é um modulo XS.
O PP esta aqui:
http://cpan.uwinnipeg.ca/module/List::Util::PP

2011/5/29 Renato Santos <renato.cron at gmail.com>

> Hmm,
>
> pelo que li do reduce do list::util, ele pode ser explicado assim:
> sabendo que a array é ($a, $b, $c, ...) você "anda" sobre a lista pegando
> sempre dois itens.
> O valor do retorno é um scalar, que, é sempre o valor do ultimo item da
> array apos o processamento, porem, o bloco não é executado quando há apenas
> um item.
> [parece mais simples usar/entender do que explicar ;p]
> Por exemplo:
> $undef = reduce {$a + $b} qw /1 2/;
> e o bloco nao vai ser executado, pois $a foi associado com 1 e $b com 2.
>
> $seis = reduce {$a + $b} qw /1 2 3/;
> internamento o loop é:
> *loop 1:* $a = 1, $b = 2; # o resultado disso foi 3
> então ele pega o resultado do block e joga no *$a = 3*
> *loop 2:  *$a = 3, $b = 3 [mas este foi o valor "puxado" da lista]
> é feito isso até o final da lista, depois disso, é retornado o valor do
> calculo.
>
> Os casos de MAX/MIN são [IMHO] um pouco de desperdício de processamento,
> pois há muito "sets" [ele vai associar o valor de $a várias vezes, mesmo
> quando não precisava].
>
> 2011/5/29 Stanislaw Pusep <creaktive at gmail.com>
>
>> Falando em programação funcional e extrapolando o tópico, alguém tem uma
>> boa referência focada em Perl?
>> Mal consigo compreender reduce() do List::Util :(
>>
>> ABS()
>>
>>
>>
>>
>> 2011/5/29 Tiago Peczenyj <tiago.peczenyj at gmail.com>
>>
>>> A melhor analogia a subrotina grep do perl é o comando grep no unix.
>>>
>>> $ grep 'condição' arquivo
>>>
>>> e o grep imprime na stdout as linhas do arquivo que satisfazem a
>>> condição.
>>>
>>> Agora o map é engraçado pois ele não tem equivalente no mundo shell,
>>> mas sim no mundo de programação funcional, acredito que ja foi muito
>>> explorado aqui.
>>>
>>> 2011/5/29 Satoshi Hayazaki <heavennevertouchedearthlyface at gmail.com>:
>>> >
>>> >
>>> > 2011/5/29 Renato Santos <renato.cron at gmail.com>
>>> >>
>>> >> O map gera uma nova lista com o resultado que você retornou
>>> (percorrendo
>>> >> cada item da[s] lista[s] que você passou)
>>> >> e o grep retorna o conteudo original dependendo do resultando que você
>>> >> retornou no código para cada um dos item[s].
>>> >> Look this:
>>> >> @quatroZeros = map { 0 } qw / a b c d/;
>>> >> @vazio = grep { 0 } qw / a b c d/;
>>> >> ----------------------
>>> >> @quatroUm = map { 1 } qw / a b c d/;
>>> >> @abc_e_d = grep { 1 } qw / a b c d/;
>>> >>
>>> >
>>> >
>>> > Adorei esse exemplo. Eu que não conhecia nenhum dos dois muito bem (só
>>> de
>>> > ouvir falar, mas nunca tinha usado) consegui entender perfeitamente com
>>> > isso. RenatoCRON++
>>> > =begin disclaimer
>>> >   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> >  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> > =end disclaimer
>>> >
>>> >
>>>
>>>
>>>
>>> --
>>> Tiago B. Peczenyj
>>> Linux User #405772
>>>
>>> http://pacman.blog.br
>>> =begin disclaimer
>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm at pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
>
>
> --
> Renato Santos
> http://www.renatocron.com/blog/
>



-- 
Renato Santos
http://www.renatocron.com/blog/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20110529/2e994642/attachment-0001.html>


More information about the SaoPaulo-pm mailing list