UNPKG

@proem/variant

Version:

proem package for handling algebraic data types

33 lines 872 B
import * as array from '@proem/array'; export function tags() { var tags = []; for (var _i = 0; _i < arguments.length; _i++) { tags[_i] = arguments[_i]; } return tags; } export function oneOf(variant, tags) { return array.includes(tags, variant.type); } export function map(cases, or) { return function (variant) { var caseFn = cases[variant.type]; if (!caseFn) { if (!or) { throw Error("No match case found for \"" + variant.type + "\""); } return or(variant); } return caseFn(variant); }; } export function reducer(caseReducers) { return function (state, variant) { var arm = caseReducers[variant.type]; if (!arm) { return state; } return arm(state, variant); }; } //# sourceMappingURL=index.js.map