NAME
Test::RandomCheck::ProbMonad - The probability monad
SYNOPSIS
use Test::RandomCheck::ProbMonad;
use Test::RandomCheck::PRNG;
# A basic generator which returns random integers
my $gen1 = gen {
my ($r, $size) = @_;
$r->next_int($size);
};
# It returns "******" strings randomly
my $gen2 = $gen1->map(sub { '*' x $_[0] });
# Build the new generator with the value from the original generator
my $gen3 = $gen2->flat_map(sub{
my $str = shift;
gen {
my ($r, $size) = @_;
$str . $r->next_int($size);
};
});
# Run generators
my $r = Test::RandomCheck::PRNG->new;
print $gen1->pick($r, 100), "\n"; # ex). 26
print $gen2->pick($r, 100), "\n"; # ex). *****************
print $gen3->pick($r, 100), "\n"; # ex). *********34
DESCRIPTION
Test::RandomCheck::Generator is a combinator to build random value generators used by Test::RandomCheck.
CONSTRUCTORS
<gen { ... };
>-
The most primitive constructor of this class. The block should return any values randomly. The block will be called on list context.
The block recieved
$r
and$size
as its arguments.$r
is an instance of Test::RandomCheck::RPNG.
METHODS
<my @random_values = $gen-
pick($rand, $size);>>-
Pick a set of values from this generator. You must pass an instance of Test::RandomCheck::RPNG.
<$gen-
map(sub { ...; return @values });>>-
A functor to apply normal functions to a Generator instance.
<$gen-
flat_map(sub { ...; return $new_gen });>>-
A kleisli composition to apply kleisli allows to a Generator instance.
SEE ALSO
AUTHOR
Masahiro Honma <hiratara@cpan.org>
COPYRIGHT
Copyright 2013- Masahiro Honma
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.