Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,20 @@
|
|||
var f1 = function (x) { return x * 2; },
|
||||
f2 = function (x) { return x * x; },
|
||||
|
||||
fs = function (f, s) {
|
||||
return function (s) {
|
||||
return s.map(f);
|
||||
}
|
||||
},
|
||||
|
||||
fsf1 = fs(f1),
|
||||
fsf2 = fs(f2);
|
||||
|
||||
// Test
|
||||
[
|
||||
fsf1([0, 1, 2, 3]),
|
||||
fsf2([0, 1, 2, 3]),
|
||||
|
||||
fsf1([2, 4, 6, 8]),
|
||||
fsf2([2, 4, 6, 8])
|
||||
]
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
var f1 = function (x) { return x * 2; },
|
||||
f2 = function (x) { return x * x; },
|
||||
|
||||
fs = function (f) {
|
||||
return function () {
|
||||
return Array.prototype.slice.call(
|
||||
arguments
|
||||
).map(f);
|
||||
}
|
||||
},
|
||||
|
||||
fsf1 = fs(f1),
|
||||
fsf2 = fs(f2);
|
||||
|
||||
// Test alternative approach, with arbitrary numbers of arguments
|
||||
[
|
||||
fsf1(0, 1, 2, 3, 4),
|
||||
fsf2(0, 1, 2),
|
||||
fsf1(2, 4, 6, 8, 10, 12),
|
||||
fsf2(2, 4, 6, 8)
|
||||
]
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
(() => {
|
||||
'use strict';
|
||||
|
||||
// GENERIC FUNCTIONS ------------------------------------------------------
|
||||
|
||||
// curry :: ((a, b) -> c) -> a -> b -> c
|
||||
const curry = f => a => b => f(a, b);
|
||||
|
||||
// map :: (a -> b) -> [a] -> [b]
|
||||
const map = curry((f, xs) => xs.map(f));
|
||||
|
||||
|
||||
// PARTIAL APPLICATION ----------------------------------------------------
|
||||
|
||||
const
|
||||
f1 = x => x * 2,
|
||||
f2 = x => x * x,
|
||||
|
||||
fs = map,
|
||||
|
||||
fsf1 = fs(f1),
|
||||
fsf2 = fs(f2);
|
||||
|
||||
// TEST -------------------------------------------------------------------
|
||||
return [
|
||||
fsf1([0, 1, 2, 3]),
|
||||
fsf2([0, 1, 2, 3]),
|
||||
|
||||
fsf1([2, 4, 6, 8]),
|
||||
fsf2([2, 4, 6, 8])
|
||||
];
|
||||
})();
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
(() => {
|
||||
'use strict';
|
||||
|
||||
// GENERIC FUNCTIONS ------------------------------------------------------
|
||||
|
||||
// 2 or more arguments
|
||||
// curry :: Function -> Function
|
||||
const curry = (f, ...args) => {
|
||||
const go = xs => xs.length >= f.length ? (f.apply(null, xs)) :
|
||||
function () {
|
||||
return go(xs.concat(Array.from(arguments)));
|
||||
};
|
||||
return go([].slice.call(args, 1));
|
||||
};
|
||||
|
||||
// map :: (a -> b) -> [a] -> [b]
|
||||
const map = curry((f, xs) => xs.map(f));
|
||||
|
||||
// PARTIAL APPLICATION ----------------------------------------------------
|
||||
const
|
||||
f1 = x => x * 2,
|
||||
f2 = x => x * x,
|
||||
|
||||
fs = map,
|
||||
|
||||
fsf1 = fs(f1),
|
||||
fsf2 = fs(f2);
|
||||
|
||||
// TEST -------------------------------------------------------------------
|
||||
return [
|
||||
fsf1([0, 1, 2, 3]),
|
||||
fsf2([0, 1, 2, 3]),
|
||||
|
||||
fsf1([2, 4, 6, 8]),
|
||||
fsf2([2, 4, 6, 8])
|
||||
];
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue