Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,5 @@
|
|||
function compose(f, g) {
|
||||
return function(x) {
|
||||
return f(g(x));
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
var id = compose(Math.sin, Math.asin);
|
||||
console.log(id(0.5)); // 0.5
|
||||
|
|
@ -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,3 @@
|
|||
function compose(f, g) {
|
||||
return x => f(g(x));
|
||||
}
|
||||
|
|
@ -0,0 +1 @@
|
|||
var compose = (f, g) => x => f(g(x));
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
var id = compose(Math.sin, Math.asin);
|
||||
console.log(id(0.5)); // 0.5
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
(() => {
|
||||
"use strict";
|
||||
|
||||
// -------------- MULTIPLE COMPOSITION ---------------
|
||||
|
||||
// compose (<<<) :: (b -> c) -> (a -> b) -> a -> c
|
||||
const compose = (...fs) =>
|
||||
// A function defined by the right-to-left
|
||||
// composition of all the functions in fs.
|
||||
fs.reduce(
|
||||
(f, g) => x => f(g(x)),
|
||||
x => x
|
||||
);
|
||||
|
||||
// ---------------------- TEST -----------------------
|
||||
const
|
||||
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