@functional-lib/hierarchy
Version:
hierarchy fp
16 lines • 907 B
JavaScript
export const compose = (...fns) => fns.reduce((f, g) => (...args) => f(g(...args)));
export const map = fn => list => list.map(fn);
export const lift2 = (f, a, b) => a.ap(b.map(f));
export const filter = fn => list => list.filter(fn);
export const find = list => fn => list.find(fn);
export const lt = left => right => left < right;
export const equals = left => right => left === right;
export const add = left => right => left + right;
export const upper = str => str.toUpperCase();
export const prop = key => obj => obj[key];
export const assoc = key => val => obj => Object.assign({}, obj, {[key]: val});
export const lens = get => set => ({ get, set });
export const view = lens => obj => lens.get(obj);
export const set = lens => val => obj => lens.set(val)(obj);
export const over = lens => fn => obj => set(lens)(fn(view(lens)(obj)))(obj);
export const lensProp = key => lens(prop(key))(assoc(key));