UNPKG

@jsoldi/hkt

Version:

Higher kinded types for typescript and a few utility monads.

23 lines 689 B
const is_semiring = Symbol("is_semiring"); /** Creates an `ISemiring` from an `ISemiringBase`. */ export function semiring(base) { if (is_semiring in base) return base; const zero = base.sum.empty; const one = base.mult.empty; return { ...{ [is_semiring]: true }, zero, one, plus: (...as) => base.sum.concat(as), times: (...as) => base.mult.concat(as), fromNatural: function (natural) { let result = zero(); for (let i = 0; i < natural; i++) result = this.plus(result, one()); return result; }, ...base, }; } //# sourceMappingURL=semiring.js.map