22/06
2015
dev-master
9999999-devMonadic type programming in PHP
MIT
The Development Requires
by Yoshinobu Wakamatsu
Wallogit.com
2017 © Pedro Peláez
Monadic type programming in PHP
library for monad pattern in PHP., (*1)
this library implements below type (class), (*2)
you can install from packagist.org., (*3)
composer require yshnb/php-monadic:dev-master
Identity is a monad type, which simply wrap any value., (*4)
<?php
use Monadic\Type\Identity;
$foo = 1;
$identity = Identity::unit($foo)->bind(function($val) {
return Identity::unit($val * 2);
});
echo $identity->get(); // 2
<?php
use Monadic\Type\Maybe;
$foo = 1;
$maybe = Maybe::unit($foo)->bind(function($val) {
return Maybe::unit($val + 1);
});
echo $maybe->get(); // 2
$maybe = $maybe->bind(function($val) {
return Maybe::unit();
});
echo $maybe->get(); // null
<?php
use Monadic\Type\Either\Right;
use Monadic\Type\Either\Left;
$foo = 1;
$either = Right::unit($foo)->bind(function($val) {
return Left::unit($val + 1);
})->left(function($val) {
return Right::unit($val + 1);
})->left(function($val) {
// not executed
return Right::unit($val + 1);
});
echo $either->get(); // 3
ListLike represents list type (class). Because list is a reserved word in PHP, this type is called ListLike., (*5)
<?php
use Monadic\Type\ListLike;
$listLike = ListLike::unit(1,2,3);
$listLike = $listLike->bind(function($val) {
return ListLike::unit($val * 2);
});
echo $listLike[0]; // 3
echo $listLike[1]; // 4
echo $listLike[2]; // 6
Monadic type programming in PHP
MIT