版博士V2.0程序
Non puoi selezionare più di 25 argomenti Gli argomenti devono iniziare con una lettera o un numero, possono includere trattini ('-') e possono essere lunghi fino a 35 caratteri.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. exports.getFunctionRing = exports.getTupleRing = exports.negate = exports.tuple = void 0;
  4. /**
  5. * The `Ring` class is for types that support addition, multiplication, and subtraction operations.
  6. *
  7. * Instances must satisfy the following law in addition to the `Semiring` laws:
  8. *
  9. * - Additive inverse: `a - a <-> (zero - a) + a <-> zero`
  10. *
  11. * Adapted from https://github.com/purescript/purescript-prelude/blob/master/src/Data/Ring.purs
  12. *
  13. * @since 2.0.0
  14. */
  15. var function_1 = require("./function");
  16. // -------------------------------------------------------------------------------------
  17. // combinators
  18. // -------------------------------------------------------------------------------------
  19. /**
  20. * Given a tuple of `Ring`s returns a `Ring` for the tuple
  21. *
  22. * @example
  23. * import { tuple } from 'fp-ts/Ring'
  24. * import * as N from 'fp-ts/number'
  25. *
  26. * const R = tuple(N.Field, N.Field, N.Field)
  27. * assert.deepStrictEqual(R.add([1, 2, 3], [4, 5, 6]), [5, 7, 9])
  28. * assert.deepStrictEqual(R.mul([1, 2, 3], [4, 5, 6]), [4, 10, 18])
  29. * assert.deepStrictEqual(R.one, [1, 1, 1])
  30. * assert.deepStrictEqual(R.sub([1, 2, 3], [4, 5, 6]), [-3, -3, -3])
  31. * assert.deepStrictEqual(R.zero, [0, 0, 0])
  32. *
  33. * @since 2.10.0
  34. */
  35. var tuple = function () {
  36. var rings = [];
  37. for (var _i = 0; _i < arguments.length; _i++) {
  38. rings[_i] = arguments[_i];
  39. }
  40. return ({
  41. add: function (x, y) { return rings.map(function (R, i) { return R.add(x[i], y[i]); }); },
  42. zero: rings.map(function (R) { return R.zero; }),
  43. mul: function (x, y) { return rings.map(function (R, i) { return R.mul(x[i], y[i]); }); },
  44. one: rings.map(function (R) { return R.one; }),
  45. sub: function (x, y) { return rings.map(function (R, i) { return R.sub(x[i], y[i]); }); }
  46. });
  47. };
  48. exports.tuple = tuple;
  49. // -------------------------------------------------------------------------------------
  50. // utils
  51. // -------------------------------------------------------------------------------------
  52. /**
  53. * `negate x` can be used as a shorthand for `zero - x`
  54. *
  55. * @since 2.0.0
  56. */
  57. var negate = function (R) {
  58. return function (a) {
  59. return R.sub(R.zero, a);
  60. };
  61. };
  62. exports.negate = negate;
  63. // -------------------------------------------------------------------------------------
  64. // deprecated
  65. // -------------------------------------------------------------------------------------
  66. /**
  67. * Use [`tuple`](#tuple) instead.
  68. *
  69. * @category zone of death
  70. * @since 2.0.0
  71. * @deprecated
  72. */
  73. exports.getTupleRing = exports.tuple;
  74. /**
  75. * Use [`getRing`](./function.ts.html#getring) instead.
  76. *
  77. * @category zone of death
  78. * @since 2.0.0
  79. * @deprecated
  80. */
  81. exports.getFunctionRing = function_1.getRing;