dope2/lib/structures/list.js

16 lines
561 B
JavaScript

// 'normal' implementation
export const emptyList = [];
// const emptyListType = makeGeneric(a => lsType(() => a));
export const get = ls => i => ls[i];
export const put = ls => i => elem => ls.with(Number(i), elem);
export const push = ls => elem => ls.concat([elem]);
export const pop = ls => ls.pop();
export const map = ls => fn => ls.map(elem => fn(elem));
export const length = ls => ls.length;
export const fold = callback => initial => ls => {
let acc = initial;
for (let i=0; i<ls.length; i++) {
acc = callback(acc)(ls[i]);
}
return acc;
}