2016 Update
This commit is contained in:
parent
948b86eafa
commit
dcf5d15da3
7965 changed files with 139854 additions and 31002 deletions
|
|
@ -0,0 +1,49 @@
|
|||
(function () {
|
||||
'use strict';
|
||||
|
||||
|
||||
// iterativeComposed :: [f] -> f
|
||||
function iterativeComposed(fs) {
|
||||
|
||||
return function (x) {
|
||||
var i = fs.length,
|
||||
e = x;
|
||||
|
||||
while (i--) e = fs[i](e);
|
||||
return e;
|
||||
}
|
||||
}
|
||||
|
||||
// foldComposed :: [f] -> f
|
||||
function foldComposed(fs) {
|
||||
|
||||
return function (x) {
|
||||
return fs
|
||||
.reduceRight(function (a, f) {
|
||||
return f(a);
|
||||
}, x);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
var sqrt = Math.sqrt,
|
||||
|
||||
succ = function (x) {
|
||||
return x + 1;
|
||||
},
|
||||
|
||||
half = function (x) {
|
||||
return x / 2;
|
||||
};
|
||||
|
||||
|
||||
// Testing two different multiple composition ([f] -> f) functions
|
||||
|
||||
return [iterativeComposed, foldComposed]
|
||||
.map(function (compose) {
|
||||
|
||||
// both functions compose from right to left
|
||||
return compose([half, succ, sqrt])(5);
|
||||
|
||||
});
|
||||
})();
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
(() => {
|
||||
'use strict';
|
||||
|
||||
|
||||
// compose :: [(a -> a)] -> (a -> a)
|
||||
let compose = fs => x => fs.reduceRight((a, f) => f(a), x);
|
||||
|
||||
|
||||
// TEST a composition of 3 functions (right to left)
|
||||
|
||||
let sqrt = Math.sqrt,
|
||||
|
||||
succ = x => x + 1,
|
||||
|
||||
half = x => x / 2;
|
||||
|
||||
|
||||
return compose([half, succ, sqrt])(5);
|
||||
|
||||
// --> 1.618033988749895
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue