[SP-pm] Como testar conexões remotas?

Eden Cardim edencardim at gmail.com
Tue Sep 21 15:55:49 PDT 2010


2010/9/21 Luis Motta Campos <luismottacampos em yahoo.co.uk>:
> Eu li todas as respostas aqui, e ainda não acredito que ninguém falou
> nisso. Assim, vou me manifestar.
>
> A função map() do Perl é a implementação da propriedade distributiva da
> multiplicação:
>
> 2 * ( 1 + 2 + 3 + 4 ) == 2 * 1 + 2 * 2 + 2 * 3 + 2 * 4
>
> Aqui, "distribuímos" a multiplicação por dois na "lista de valores" (na
> verdade, uma expressão aritmética).

(Aviso: o comentário abaixo pode confundir quem não se interessa por
matemática formal, e é irrelevante para a discussão sobre map, podendo
ser ignorado sem ônus ao leitor)

Acredito que você esteja equivocado. Distributividade em termos
matemáticos não é uma propriedade de operadores/funções, é uma
propriedade dos anéis. Um anel é uma estrutura matemática formado por
um conjunto e duas funções binárias, ambas tendo imagem no conjunto em
questão. São as funções do anel que definem se o anel é distributivo
ou não. Portanto não é correto falar "propriedade distributiva da
multiplicação" já que a distributividade depende também do outro
operador envolvido. Por exemplo, se invés de adição você usasse
exponenciação, o anel já não seria distributivo: 2 * (1 ^ 2 ^ 3 ^ 4)
!= (2*1)^(2*2)^(2*3)^(2*4). Observa também, que se você inverter a
aplicação das operações de adição e soma, o anel também não é
distributivo: 2 + (1 * 2 * 3 * 4) != (2+1)*(2+2)*(2+3)*(2+4).

Concluindo, como map é apenas *uma* função, não procede dizer que ela
implementa distributividade, porque matematicamente, uma única função
é insuficiente para a propriedade sequer existir.

> Em Perl, podemos "mapear" (sic) ou "distribuir" a aplicação de uma
> função dentro de um array. O resultado disso é também um array, que
> contém o resultado da aplicação da função a cada elemento do array
> passado como argumento:
>
> map { $_++ } 1, 2, 3, 4  retorna a lista ( 2, 3, 4, 5).

Isso aí vai gerar um erro em runtime por tentativa de modificação de
valores read-only. Na verdade, o que você quer é isso aqui: map { $_ +
1 } 1, 2, 3, 4

Na implementação do perl, map é apenas uma função que aplica outra
função, em ordem, aos elementos de uma lista, um por vez e produz uma
lista através da concatenação das listas resultantes dessas
aplicações. A quantidade de elementos na lista final depende
exclusivamente da função passada para a função map. Alguns exemplos:

map { ( $_ % 2 ? () : $_ ) } 1, 2, 3, 4; # retorna (2, 4)

map { ( $_ % 2 ? $_ : () ) } 1, 2, 3, 4; # retorna (1, 3)

map { 2 x ($_) } 1, 2, 3, 4; # retorna (1, 1, 2, 2, 3, 3, 4, 4)

map { $_ x ($_) } 1, 2, 3, 4; # retorna (1, 2, 2, 3, 3, 3, 4, 4, 4, 4)

-- 
   Eden Cardim       Need help with your Catalyst or DBIx::Class project?
  Code Monkey                    http://www.shadowcat.co.uk/catalyst/
 Shadowcat Systems Ltd.  Want a managed development or deployment platform?
http://blog.edencardim.com/            http://www.shadowcat.co.uk/servers/


More information about the SaoPaulo-pm mailing list