Skip to content

yshnb/php-monadic

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-monadic

library for monad pattern in PHP.

type

this library implements below type (class)

  • Identity
  • Maybe
  • Either
  • ListLike(List)

Usage

Install

you can install from packagist.org.

composer require yshnb/php-monadic:dev-master

Examples

Identity

Identity is a monad type, which simply wrap any value.

<?php

use Monadic\Type\Identity;

$foo = 1;
$identity = Identity::unit($foo)->bind(function($val) {
    return Identity::unit($val * 2);
});
echo $identity->get(); // 2

Maybe

<?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

Either

<?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

ListLike represents list type (class). Because list is a reserved word in PHP, this type is called ListLike.

<?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

About

library for monad pattern in PHP

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages