What if for the initiation, simply expose the code without naming anything, neither
documenting.
Let us, just read the code and try to understand.
function init(v) { return function() { return v; } } function bind(wv, fn) { return fn(wv()) } function addOne(x) { return x + 1 } function mul2(x) { return x * 2 } function sqrt(x) { return Math.sqrt(x) } function lift(f) { return function (val) { return init(f(val)) } } function execute(lstf, value) { var nlstf = lstf.map(lift) return (nlstf.reduce(bind,init(value)))() } var result = execute([addOne,sqrt,mul2],5)
Links
http://www.javascriptoo.com/monad-js
http://modernjavascript.blogspot.fr/2013/06/monads-in-plain-javascript.html
https://github.com/scottburch/functional