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
No comments:
Post a Comment