@eeue56/ts-core
Version:
Core library for TypeScript inspired by Elm
109 lines • 5.42 kB
JavaScript
/*
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==