Data-Monad-CondVar

 view release on metacpan or  search on metacpan

eg/bench_cv.pl  view on Meta::CPAN

use Data::Monad::CondVar;
use Data::Monad::Base::Sugar;
use AnyEvent;
use Coro;
use Coro::AnyEvent;
use Benchmark qw(:hireswallclock);

my ($delay, $count) = @ARGV;
$delay //= 0;
$count //= 20000;
sub cv($) {
    my $v = shift;
    my $cv = AE::cv;
    my $t; $t = AE::timer $delay, 0, sub {
        $cv->($v);
        undef $t;
    };
    return $cv;
}

sub bare_ae($$) {

t/condvar/ap.t  view on Meta::CPAN

use strict;
use warnings;
use Data::Monad::CondVar;
use AnyEvent;
use Test::More;

sub cv($) {
    my @v = @_;
    my $cv = AE::cv;
    my $t; $t = AE::timer .002, 0, sub {
        $cv->(@v);
        undef $t;
    };
    return $cv;
}

is cv(sub { $_[0] * 2 })->ap(cv 3)->recv, 6;

t/condvar/filter.t  view on Meta::CPAN

use strict;
use warnings;
use Data::Monad::CondVar;
use AnyEvent;
use Test::More;

sub cv($) {
    my $v = shift;

    my $cv = AE::cv;
    my $t; $t = AE::timer 0, 0, sub { $cv->($v); undef $t; };
    return $cv;
}

is +(cv 3)->filter(sub { $_[0] > 2})->recv, 3;
eval { +(cv 1)->filter(sub { $_[0] > 2})->recv };
ok $@;



( run in 1.127 second using v1.01-cache-2.11-cpan-5b529ec07f3 )