<div dir="ltr">Parabéns, dificil imaginar a emoção e alegria,<div style>Josef</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">Em 23 de janeiro de 2013 20:08, Eduardo Almeida <span dir="ltr"><<a href="mailto:eduardo@web2solutions.com.br" target="_blank">eduardo@web2solutions.com.br</a>></span> escreveu:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<div>\0\<br>
/0/<br>
<br>
hhahahaha .. quando você vê o primeiro módulo lá até demora um
pouco pra "cair a ficha" ...<br>
<br>
Que venha outros módulos<br>
<br>
Abs<div><div class="h5"><br>
<br>
<br>
On 23/01/2013 19:45, Tiago Peczenyj wrote:<br>
</div></div></div><div><div class="h5">
<blockquote type="cite">
<pre>q emossaum!
<a href="http://search.cpan.org/~pacman/Lazy-Bool-0.01/" target="_blank">http://search.cpan.org/~pacman/Lazy-Bool-0.01/</a>
Esse modulo não faz muita coisa de util (ate agora) mas eu bolei uma
forma simples de fazer um wrap em valores booleanos e deixa-los lazy
até que seja necessario utiliza-los.
E para deixar mais legal, os operadores and, or e not são suportados E
lazy. Ou seja vc pode fazer coisas como
use Lazy::Bool;
use Test::More tests=> 3;
my $a = 6;
my $b = 4;
my $x = Lazy::Bool->new(sub{ $a > $b }); # exemplo ruim mas imagine
q isso seja "custoso"
my $false = Lazy::Bool::false;
my $result = ($x | $false) & ( ! ( $false & ! $false ) );
# NOW the expressions will be evaluate
ok($result, "complex expression should be true");
ok(!! $x , "double negation of true value should be true");
ok(!!! $false, "truple negation of false value should be true");
O codigo em si é simples, faço um override do &, | e ! alem do bool
(para lidar com o "casting" de objeto para booleano).
Eu tentei suportar && e || mas não foi possivel com o que eu aprendi ate agora.
É claro que existem outros modulos que fazem tudo isso e muito mais.
Meu objetivo foi entender o PAUSE acima de tudo. E use overload.
Agora ficam algumas duvidas
- devo implementar curto circuito? originalmente o & e | não são
curto-circuitados. Significa que isto
if ( false & qqcoisa )
o qqcoisa vai ser avaliado sempre. com && eu não tenho isso.
- devo memorizar o resultado da expressão? eu estou adiando até o
ultimo momento para avaliar a expressão, mas depois vou fazer tantas
vezes forem necessario. parece esquisito.
Eu imaginei q posso adicionar opções no construtor para adicionar
estes comportamentos. Ou ligar tudo sem me preocupar, afinal ninguem
usa isso em produção, é beta, etc. Sugestòes?
De qq forma se eu criar um proximo modulo eu vou usar o dist::zilla
abracetas
Pac
</pre>
</blockquote>
<br>
<br>
</div></div><span class="HOEnZb"><font color="#888888"><div>-- <br>
Eduardo Almeida - Engenharia de Software<br>
<a href="mailto:eduardo@web2solutions.com.br" target="_blank">eduardo@web2solutions.com.br</a> - 27 3321-2430 / 27 9839 3755<br>
<br>
<b>WEB2 Solutions</b> - Inovando, sempre!</div>
</font></span></div>
<br>=begin disclaimer<br>
Sao Paulo Perl Mongers: <a href="http://sao-paulo.pm.org/" target="_blank">http://sao-paulo.pm.org/</a><br>
SaoPaulo-pm mailing list: <a href="mailto:SaoPaulo-pm@pm.org">SaoPaulo-pm@pm.org</a><br>
L<<a href="http://mail.pm.org/mailman/listinfo/saopaulo-pm" target="_blank">http://mail.pm.org/mailman/listinfo/saopaulo-pm</a>><br>
=end disclaimer<br>
<br></blockquote></div><br></div>