Example #1
0
function guard(...$args)
{
    return f(function ($a) {
        if ($a) {
            return Func\Applicative\pure(new Func\Unit());
        } else {
            return Func\MonadZero\mzero();
        }
    }, ...$args);
}
Example #2
0
 private function searchTree(callable $f, Tree $tree)
 {
     if ($tree instanceof EmptyTree) {
         return mzero();
     }
     if ($f($tree->value)) {
         return $this->searchTree($f, $tree->left)->mplus(ret($tree->value))->mplus($this->searchTree($f, $tree->right));
     } else {
         return $this->searchTree($f, $tree->left)->mplus($this->searchTree($f, $tree->right));
     }
 }
Example #3
0
 public function testFromMaybe()
 {
     $this->assertEquals('a', fromMaybe('a', mzero()));
     $this->assertEquals(2, fromMaybe(2, mzero()));
 }