Data commit

This commit is contained in:
Ingy döt Net 2023-07-01 11:58:00 -04:00
parent 7387c8f97b
commit cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions

View file

@ -0,0 +1,5 @@
function compose(f, g) {
return function(x) {
return f(g(x));
};
}

View file

@ -0,0 +1,2 @@
var id = compose(Math.sin, Math.asin);
console.log(id(0.5)); // 0.5

View file

@ -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);
});
})();

View file

@ -0,0 +1,3 @@
function compose(f, g) {
return x => f(g(x));
}

View file

@ -0,0 +1 @@
var compose = (f, g) => x => f(g(x));

View file

@ -0,0 +1,2 @@
var id = compose(Math.sin, Math.asin);
console.log(id(0.5)); // 0.5

View file

@ -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
})();