Skip to content

Instantly share code, notes, and snippets.

let pointer = Promise.resolve();
let addQuestions = (pointer, questions) => questions.reduce((pointer, question) => pointer.then(question), pointer);
//add Initial Questions
pointer = addQuestions(pointer, questions); //move pointer
// some time later
pointer = addQuestions(pointer, moreQuestions); //move pointer again
@MinusFour
MinusFour / Lenses.js
Last active February 21, 2017 14:14
Lenses
let compose = (f, g) => x => f(g(x));
let wrap = value => () => value;
let lenses = {
over : (lens, fn, obj) => lens.setter(fn)(obj),
view : (lens, obj) => lens.getter(obj),
set : (lens, value, obj) => lenses.over(lens, wrap(value), obj),
basicCompose : (lensA, lensB) => ({
getter : compose(lensB.getter, lensA.getter),
setter : fn => obj => lensA.setter(() => lensB.setter(fn)(lensA.getter(obj)))(obj)
}),