Reactive Programming is programming with (asynchronous) data streams
function unit(value) {}
//returns a monad that contains the value
function bind(monad, function (value)) {}
//returns a monad containing the result of the function
//applied to the value of the monad
function _Container(val) {
this._val = val;
}
_Container.prototype.map = function(f) {
return Container(f(this._val));
};
var Container = function(val) {
return new _Container(val);
};