NAME
Data::Monad::Base::Sugar - Syntax sugars for Data::Monad.
SYNOPSIS
use
Data::Monad::List;
my
$result
= Data::Monad::Base::Sugar::
for
{
pick \
my
$x
=>
sub
{ scalar_list 1 .. 100 };
pick \
my
$y
=>
sub
{ scalar_list
$x
.. 100 };
pick \
my
$z
=>
sub
{ scalar_list
$y
.. (
$x
+
$y
> 100 ? 100 :
$x
+
$y
) };
satisfy {
$x
**2 +
$y
**2 ==
$z
**2 };
yield {
$x
,
$y
,
$z
}
};
DESCRIPTION
Data::Monad::Base::Sugar provides syntax sugars for Data::Monad.
The for method is known as "do" expression in Haskell.
METHODS
- $monad = Data::Monad::Base::Sugar::for { ... }
-
DSL to create a monad value. You can use following functions in the block, and shouldn't write sentences other than following functions in the block.
All sentences are connected by
flat_map
automatically.- pick \$value, \&f
- pick \@values, \&f
- pick \&f
-
Retrieves values from the monad, and puts it in
$value
.\&f
should return any Monad objects.You should handle
$value
as read-only and should use$value
only in code-refs of other DSL functions. - let \$value, \&f
- let \@values, \&f
-
Captures the value into
$value
.\&f
can return any values, and the result is put in$value
directly. - satisfy { ... }
-
Filters values by using
filter
. - yield { ... }
-
Wraps values in a Monad object by using
unit
and returns the monad object. This sentence should be the last line of DSL.
AUTHOR
hiratara <hiratara {at} cpan.org>
SEE ALSO
LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.