Inheritance: extends Widmogrod\FantasyLand\Monad, extends Widmogrod\Common\ValueOfInterface
Example #1
0
/**
 * maybe :: b -> (a -> b) -> Maybe a -> b
 *
 * @param null $default
 * @param callable $fn
 * @param Maybe $maybe
 *
 * @return mixed|\Closure
 */
function maybe($default, callable $fn = null, Maybe $maybe = null)
{
    return call_user_func_array(f\curryN(3, function ($default, callable $fn, Maybe $maybe) {
        if ($maybe instanceof Nothing) {
            return $default;
        }
        return call_user_func($fn, $maybe->extract());
    }), func_get_args());
}