"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Field = exports.MonoidProduct = exports.MonoidSum = exports.SemigroupProduct = exports.SemigroupSum = exports.MagmaSub = exports.Show = exports.Bounded = exports.Ord = exports.Eq = exports.isNumber = void 0; // ------------------------------------------------------------------------------------- // refinements // ------------------------------------------------------------------------------------- /** * @category refinements * @since 2.11.0 */ var isNumber = function (u) { return typeof u === 'number'; }; exports.isNumber = isNumber; // ------------------------------------------------------------------------------------- // instances // ------------------------------------------------------------------------------------- /** * @category instances * @since 2.10.0 */ exports.Eq = { equals: function (first, second) { return first === second; } }; /** * @category instances * @since 2.10.0 */ exports.Ord = { equals: exports.Eq.equals, compare: function (first, second) { return (first < second ? -1 : first > second ? 1 : 0); } }; /** * @category instances * @since 2.10.0 */ exports.Bounded = { equals: exports.Eq.equals, compare: exports.Ord.compare, top: Infinity, bottom: -Infinity }; /** * @category instances * @since 2.10.0 */ exports.Show = { show: function (n) { return JSON.stringify(n); } }; /** * @category instances * @since 2.11.0 */ exports.MagmaSub = { concat: function (first, second) { return first - second; } }; /** * `number` semigroup under addition. * * @example * import { SemigroupSum } from 'fp-ts/number' * * assert.deepStrictEqual(SemigroupSum.concat(2, 3), 5) * * @category instances * @since 2.10.0 */ exports.SemigroupSum = { concat: function (first, second) { return first + second; } }; /** * `number` semigroup under multiplication. * * @example * import { SemigroupProduct } from 'fp-ts/number' * * assert.deepStrictEqual(SemigroupProduct.concat(2, 3), 6) * * @category instances * @since 2.10.0 */ exports.SemigroupProduct = { concat: function (first, second) { return first * second; } }; /** * `number` monoid under addition. * * The `empty` value is `0`. * * @example * import { MonoidSum } from 'fp-ts/number' * * assert.deepStrictEqual(MonoidSum.concat(2, MonoidSum.empty), 2) * * @category instances * @since 2.10.0 */ exports.MonoidSum = { concat: exports.SemigroupSum.concat, empty: 0 }; /** * `number` monoid under multiplication. * * The `empty` value is `1`. * * @example * import { MonoidProduct } from 'fp-ts/number' * * assert.deepStrictEqual(MonoidProduct.concat(2, MonoidProduct.empty), 2) * * @category instances * @since 2.10.0 */ exports.MonoidProduct = { concat: exports.SemigroupProduct.concat, empty: 1 }; /** * @category instances * @since 2.10.0 */ exports.Field = { add: exports.SemigroupSum.concat, zero: 0, mul: exports.SemigroupProduct.concat, one: 1, sub: exports.MagmaSub.concat, degree: function (_) { return 1; }, div: function (first, second) { return first / second; }, mod: function (first, second) { return first % second; } };