1: <?php
2:
3: namespace Chromabits\Nucleus\Control\Interfaces;
4:
5: use Closure;
6:
7: /**
8: * Interface MonadInterface
9: *
10: * @author Eduardo Trujillo <ed@chromabits.com>
11: * @package Chromabits\Nucleus\Monads\Interfaces
12: */
13: interface MonadInterface extends ApplyInterface, ChainInterface
14: {
15: /**
16: * >>==
17: *
18: * @param callable|Closure $closure
19: *
20: * @return MonadInterface
21: */
22: public function bind(callable $closure);
23:
24: /**
25: * return/mreturn/unit
26: *
27: * @param $value
28: *
29: * @return MonadInterface
30: */
31: public static function of($value);
32: }
33: