run() public method

Perform unsafe operation
public run ( ) : mixed
return mixed
Example #1
0
/**
 * ioState :: IO a -> State IO a
 *
 * @param M\IO $io
 *
 * @return M\State
 */
function ioState(M\IO $io)
{
    return M\State::of(function ($state) use($io) {
        list($key, $data) = $state;
        $value = $io->run();
        $data[$key] = $value;
        $newState = [$key, $data];
        return [$value, $newState];
    });
}
Example #2
0
/**
 * until :: (a -> Bool) -> (a -> b -> b) -> b -> IO a -> IO b
 *
 * @param callable $predicate (a -> Bool)
 * @param callable $do        (a -> b -> a)
 * @param mixed $base         b
 * @param M\IO $ioValue       IO a
 *
 * @return M\IO
 */
function until(callable $predicate, callable $do, $base, M\IO $ioValue)
{
    return M\IO::of(function () use($predicate, $do, $base, $ioValue) {
        do {
            $value = $ioValue->run();
            $isFulfilled = $predicate($value);
            $base = $isFulfilled ? $base : call_user_func($do, $value, $base);
        } while (!$isFulfilled);
        return $base;
    });
}
Example #3
0
/**
 * tryCatch :: Exception e => IO a -> (e -> IO a) -> IO a
 *
 * @param M\IO $io
 * @param callable $catchFunction
 *
 * @return M\IO
 */
function tryCatch(M\IO $io = null, callable $catchFunction = null)
{
    return call_user_func_array(f\curryN(2, function (M\IO $io, callable $catchFunction) {
        return M\IO::of(function () use($io, $catchFunction) {
            try {
                return $io->run();
            } catch (\Exception $e) {
                return call_user_func($catchFunction, $e);
            }
        });
    }), func_get_args());
}