版博士V2.0程序
Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

Ordering.js 2.3 KiB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. /**
  2. * Less strict version of [`match`](#match).
  3. *
  4. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  5. *
  6. * @category pattern matching
  7. * @since 2.12.0
  8. */
  9. export var matchW = function (onLessThan, onEqual, onGreaterThan) {
  10. return function (o) {
  11. return o === -1 ? onLessThan() : o === 0 ? onEqual() : onGreaterThan();
  12. };
  13. };
  14. /**
  15. * @category pattern matching
  16. * @since 2.10.0
  17. */
  18. export var match = matchW;
  19. // -------------------------------------------------------------------------------------
  20. // combinators
  21. // -------------------------------------------------------------------------------------
  22. /**
  23. * @since 2.10.0
  24. */
  25. export var reverse = function (o) { return (o === -1 ? 1 : o === 1 ? -1 : 0); };
  26. // -------------------------------------------------------------------------------------
  27. // instances
  28. // -------------------------------------------------------------------------------------
  29. /**
  30. * @category instances
  31. * @since 2.10.0
  32. */
  33. export var Eq = {
  34. equals: function (x, y) { return x === y; }
  35. };
  36. /**
  37. * @category instances
  38. * @since 2.10.0
  39. */
  40. export var Semigroup = {
  41. concat: function (x, y) { return (x !== 0 ? x : y); }
  42. };
  43. /**
  44. * @category instances
  45. * @since 2.10.0
  46. */
  47. export var Monoid = {
  48. concat: Semigroup.concat,
  49. empty: 0
  50. };
  51. // -------------------------------------------------------------------------------------
  52. // utils
  53. // -------------------------------------------------------------------------------------
  54. /**
  55. * @since 2.0.0
  56. */
  57. export var sign = function (n) { return (n <= -1 ? -1 : n >= 1 ? 1 : 0); };
  58. // -------------------------------------------------------------------------------------
  59. // deprecated
  60. // -------------------------------------------------------------------------------------
  61. /**
  62. * Use [`reverse`](#reverse) instead.
  63. *
  64. * @category zone of death
  65. * @since 2.0.0
  66. * @deprecated
  67. */
  68. export var invert = reverse;
  69. /**
  70. * Use [`Semigroup`](#semigroup) instead
  71. *
  72. * @category zone of death
  73. * @since 2.0.0
  74. * @deprecated
  75. */
  76. export var semigroupOrdering = Semigroup;
  77. /**
  78. * Use [`Eq`](#eq) instead
  79. *
  80. * @category zone of death
  81. * @since 2.0.0
  82. * @deprecated
  83. */
  84. export var eqOrdering = Eq;
  85. /**
  86. * Use [`Monoid`](#monoid) instead
  87. *
  88. * @category zone of death
  89. * @since 2.4.0
  90. * @deprecated
  91. */
  92. export var monoidOrdering = Monoid;