JS monads pseudo code usage example
/*
* Monads = i/o stream
*/
var a = 1;
var multiply = function( value ) {
return value * 2;
};
var add = function( value ) {
return value + 1;
};
/*
* Without monad
*/
a = multiply( a );
a = add( a ); // a => 3
/*
* With monad:
* - seperating app logic from business logic
* - i/o stream
*/
var monad = new Monad( a );
monad.bind( multiply )
// returned value by multiply function use as an argument for add function, and so on...
.bind( add )
...
a = monada.extract(); // => 3