版博士V2.0程序
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

number.js 3.2 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.Field = exports.MonoidProduct = exports.MonoidSum = exports.SemigroupProduct = exports.SemigroupSum = exports.MagmaSub = exports.Show = exports.Bounded = exports.Ord = exports.Eq = exports.isNumber = void 0;
  4. // -------------------------------------------------------------------------------------
  5. // refinements
  6. // -------------------------------------------------------------------------------------
  7. /**
  8. * @category refinements
  9. * @since 2.11.0
  10. */
  11. var isNumber = function (u) { return typeof u === 'number'; };
  12. exports.isNumber = isNumber;
  13. // -------------------------------------------------------------------------------------
  14. // instances
  15. // -------------------------------------------------------------------------------------
  16. /**
  17. * @category instances
  18. * @since 2.10.0
  19. */
  20. exports.Eq = {
  21. equals: function (first, second) { return first === second; }
  22. };
  23. /**
  24. * @category instances
  25. * @since 2.10.0
  26. */
  27. exports.Ord = {
  28. equals: exports.Eq.equals,
  29. compare: function (first, second) { return (first < second ? -1 : first > second ? 1 : 0); }
  30. };
  31. /**
  32. * @category instances
  33. * @since 2.10.0
  34. */
  35. exports.Bounded = {
  36. equals: exports.Eq.equals,
  37. compare: exports.Ord.compare,
  38. top: Infinity,
  39. bottom: -Infinity
  40. };
  41. /**
  42. * @category instances
  43. * @since 2.10.0
  44. */
  45. exports.Show = {
  46. show: function (n) { return JSON.stringify(n); }
  47. };
  48. /**
  49. * @category instances
  50. * @since 2.11.0
  51. */
  52. exports.MagmaSub = {
  53. concat: function (first, second) { return first - second; }
  54. };
  55. /**
  56. * `number` semigroup under addition.
  57. *
  58. * @example
  59. * import { SemigroupSum } from 'fp-ts/number'
  60. *
  61. * assert.deepStrictEqual(SemigroupSum.concat(2, 3), 5)
  62. *
  63. * @category instances
  64. * @since 2.10.0
  65. */
  66. exports.SemigroupSum = {
  67. concat: function (first, second) { return first + second; }
  68. };
  69. /**
  70. * `number` semigroup under multiplication.
  71. *
  72. * @example
  73. * import { SemigroupProduct } from 'fp-ts/number'
  74. *
  75. * assert.deepStrictEqual(SemigroupProduct.concat(2, 3), 6)
  76. *
  77. * @category instances
  78. * @since 2.10.0
  79. */
  80. exports.SemigroupProduct = {
  81. concat: function (first, second) { return first * second; }
  82. };
  83. /**
  84. * `number` monoid under addition.
  85. *
  86. * The `empty` value is `0`.
  87. *
  88. * @example
  89. * import { MonoidSum } from 'fp-ts/number'
  90. *
  91. * assert.deepStrictEqual(MonoidSum.concat(2, MonoidSum.empty), 2)
  92. *
  93. * @category instances
  94. * @since 2.10.0
  95. */
  96. exports.MonoidSum = {
  97. concat: exports.SemigroupSum.concat,
  98. empty: 0
  99. };
  100. /**
  101. * `number` monoid under multiplication.
  102. *
  103. * The `empty` value is `1`.
  104. *
  105. * @example
  106. * import { MonoidProduct } from 'fp-ts/number'
  107. *
  108. * assert.deepStrictEqual(MonoidProduct.concat(2, MonoidProduct.empty), 2)
  109. *
  110. * @category instances
  111. * @since 2.10.0
  112. */
  113. exports.MonoidProduct = {
  114. concat: exports.SemigroupProduct.concat,
  115. empty: 1
  116. };
  117. /**
  118. * @category instances
  119. * @since 2.10.0
  120. */
  121. exports.Field = {
  122. add: exports.SemigroupSum.concat,
  123. zero: 0,
  124. mul: exports.SemigroupProduct.concat,
  125. one: 1,
  126. sub: exports.MagmaSub.concat,
  127. degree: function (_) { return 1; },
  128. div: function (first, second) { return first / second; },
  129. mod: function (first, second) { return first % second; }
  130. };