19 lines
460 B
JavaScript
19 lines
460 B
JavaScript
Array.prototype.bind = function (func) {
|
|
return this.map(func).reduce(function (acc, a) { return acc.concat(a); });
|
|
}
|
|
|
|
Array.unit = function (elem) {
|
|
return [elem];
|
|
}
|
|
|
|
Array.lift = function (func) {
|
|
return function (elem) { return Array.unit(func(elem)); };
|
|
}
|
|
|
|
inc = function (n) { return n + 1; }
|
|
doub = function (n) { return 2 * n; }
|
|
listy_inc = Array.lift(inc);
|
|
listy_doub = Array.lift(doub);
|
|
|
|
[3,4,5].bind(listy_inc).bind(listy_doub); // [8, 10, 12]
|