UNPKG

@eeue56/ts-core

Version:

Core library for TypeScript inspired by Elm

109 lines 5.42 kB
/* Create a Maybe with an actual value */ export function Just(value) { return { kind: 'Just', value: value, }; } /* Create a Maybe with no value */ export function Nothing() { return { kind: 'Nothing', }; } export function isJust(maybe) { switch (maybe.kind) { case 'Just': return true; default: return false; } } export function isNothing(maybe) { switch (maybe.kind) { case 'Nothing': return true; default: return false; } } /* If a maybe has a value, return it. Otherwise return the provided value */ export function withDefault(value, maybeValue) { switch (maybeValue.kind) { case 'Just': return maybeValue.value; default: return value; } } /* If a maybe has a value, apply a function to it and return a maybe containing the new value. Otherwise return Nothing. */ export function map(func, maybeValue) { switch (maybeValue.kind) { case 'Just': return Just(func(maybeValue.value)); default: return maybeValue; } } /* If both maybes have a value, apply a function to them and return a maybe containing the new value. Otherwise return Nothing. */ export function map2(func, firstMaybeValue, secondMaybeValue) { switch (firstMaybeValue.kind) { case 'Just': switch (secondMaybeValue.kind) { case 'Just': return Just(func(firstMaybeValue.value, secondMaybeValue.value)); default: return Nothing(); } default: return Nothing(); } } /* If all maybes have a value, apply a function to them and return a maybe containing the new value. Otherwise return Nothing. */ export function map3(func, firstMaybeValue, secondMaybeValue, thirdMaybeValue) { switch (firstMaybeValue.kind) { case 'Just': switch (secondMaybeValue.kind) { case 'Just': switch (thirdMaybeValue.kind) { case 'Just': return Just(func(firstMaybeValue.value, secondMaybeValue.value, thirdMaybeValue.value)); default: return Nothing(); } default: return Nothing(); } default: return Nothing(); } } /* If the maybe has a value, apply a function that turns things into a maybe to it. Otherwise return Nothing. */ export function andThen(func, maybeValue) { switch (maybeValue.kind) { case 'Just': return func(maybeValue.value); default: return Nothing(); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21heWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBOztFQUVFO0FBQ0YsTUFBTSxVQUFVLElBQUksQ0FBSSxLQUFRO0lBQzVCLE9BQU87UUFDSCxJQUFJLEVBQUUsTUFBTTtRQUNaLEtBQUssRUFBRSxLQUFLO0tBQ2YsQ0FBQztBQUNOLENBQUM7QUFFRDs7RUFFRTtBQUNGLE1BQU0sVUFBVSxPQUFPO0lBQ25CLE9BQU87UUFDSCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDO0FBQ04sQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUksS0FBZTtJQUNyQyxRQUFRLEtBQUssQ0FBQyxJQUFJLEVBQUU7UUFDaEIsS0FBSyxNQUFNO1lBQ1AsT0FBTyxJQUFJLENBQUM7UUFDaEI7WUFDSSxPQUFPLEtBQUssQ0FBQztLQUNwQjtBQUNMLENBQUM7QUFFRCxNQUFNLFVBQVUsU0FBUyxDQUFJLEtBQWU7SUFDeEMsUUFBUSxLQUFLLENBQUMsSUFBSSxFQUFFO1FBQ2hCLEtBQUssU0FBUztZQUNWLE9BQU8sSUFBSSxDQUFDO1FBQ2hCO1lBQ0ksT0FBTyxLQUFLLENBQUM7S0FDcEI7QUFDTCxDQUFDO0FBRUQ7OztFQUdFO0FBQ0YsTUFBTSxVQUFVLFdBQVcsQ0FBSSxLQUFRLEVBQUUsVUFBb0I7SUFDekQsUUFBUSxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQ3JCLEtBQUssTUFBTTtZQUNQLE9BQU8sVUFBVSxDQUFDLEtBQUssQ0FBQztRQUU1QjtZQUNJLE9BQU8sS0FBSyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQztBQUVEOzs7RUFHRTtBQUNGLE1BQU0sVUFBVSxHQUFHLENBQ2YsSUFBdUIsRUFDdkIsVUFBb0I7SUFFcEIsUUFBUSxVQUFVLENBQUMsSUFBSSxFQUFFO1FBQ3JCLEtBQUssTUFBTTtZQUNQLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUV4QztZQUNJLE9BQU8sVUFBVSxDQUFDO0tBQ3pCO0FBQ0wsQ0FBQztBQUVEOzs7RUFHRTtBQUNGLE1BQU0sVUFBVSxJQUFJLENBQ2hCLElBQThDLEVBQzlDLGVBQXlCLEVBQ3pCLGdCQUEwQjtJQUUxQixRQUFRLGVBQWUsQ0FBQyxJQUFJLEVBQUU7UUFDMUIsS0FBSyxNQUFNO1lBQ1AsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQzNCLEtBQUssTUFBTTtvQkFDUCxPQUFPLElBQUksQ0FDUCxJQUFJLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FDdEQsQ0FBQztnQkFFTjtvQkFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO2FBQ3hCO1FBQ0w7WUFDSSxPQUFPLE9BQU8sRUFBRSxDQUFDO0tBQ3hCO0FBQ0wsQ0FBQztBQUVEOzs7RUFHRTtBQUNGLE1BQU0sVUFBVSxJQUFJLENBQ2hCLElBQTZELEVBQzdELGVBQXlCLEVBQ3pCLGdCQUEwQixFQUMxQixlQUF5QjtJQUV6QixRQUFRLGVBQWUsQ0FBQyxJQUFJLEVBQUU7UUFDMUIsS0FBSyxNQUFNO1lBQ1AsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUU7Z0JBQzNCLEtBQUssTUFBTTtvQkFDUCxRQUFRLGVBQWUsQ0FBQyxJQUFJLEVBQUU7d0JBQzFCLEtBQUssTUFBTTs0QkFDUCxPQUFPLElBQUksQ0FDUCxJQUFJLENBQ0EsZUFBZSxDQUFDLEtBQUssRUFDckIsZ0JBQWdCLENBQUMsS0FBSyxFQUN0QixlQUFlLENBQUMsS0FBSyxDQUN4QixDQUNKLENBQUM7d0JBRU47NEJBQ0ksT0FBTyxPQUFPLEVBQUUsQ0FBQztxQkFDeEI7Z0JBRUw7b0JBQ0ksT0FBTyxPQUFPLEVBQUUsQ0FBQzthQUN4QjtRQUNMO1lBQ0ksT0FBTyxPQUFPLEVBQUUsQ0FBQztLQUN4QjtBQUNMLENBQUM7QUFFRDs7O0VBR0U7QUFDRixNQUFNLFVBQVUsT0FBTyxDQUNuQixJQUFpQyxFQUNqQyxVQUFvQjtJQUVwQixRQUFRLFVBQVUsQ0FBQyxJQUFJLEVBQUU7UUFDckIsS0FBSyxNQUFNO1lBQ1AsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxDO1lBQ0ksT0FBTyxPQUFPLEVBQUUsQ0FBQztLQUN4QjtBQUNMLENBQUMifQ==