September 2017 Update
This commit is contained in:
parent
bba7bfd280
commit
ba8067c3b7
14570 changed files with 153136 additions and 63871 deletions
|
|
@ -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