版博士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.
 
 
 
 

127 line
2.8 KiB

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