NAME
Test::RandomCheck::ProbMonad - The probability monad
SYNOPSIS
# 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;
$gen1
->pick(
$r
, 100),
"\n"
;
# ex). 26
$gen2
->pick(
$r
, 100),
"\n"
;
# ex). *****************
$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.