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

765 lines
22 KiB

  1. "use strict";
  2. var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
  3. if (k2 === undefined) k2 = k;
  4. var desc = Object.getOwnPropertyDescriptor(m, k);
  5. if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
  6. desc = { enumerable: true, get: function() { return m[k]; } };
  7. }
  8. Object.defineProperty(o, k2, desc);
  9. }) : (function(o, m, k, k2) {
  10. if (k2 === undefined) k2 = k;
  11. o[k2] = m[k];
  12. }));
  13. var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
  14. Object.defineProperty(o, "default", { enumerable: true, value: v });
  15. }) : function(o, v) {
  16. o["default"] = v;
  17. });
  18. var __importStar = (this && this.__importStar) || function (mod) {
  19. if (mod && mod.__esModule) return mod;
  20. var result = {};
  21. if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
  22. __setModuleDefault(result, mod);
  23. return result;
  24. };
  25. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  26. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  27. return new (P || (P = Promise))(function (resolve, reject) {
  28. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  29. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  30. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  31. step((generator = generator.apply(thisArg, _arguments || [])).next());
  32. });
  33. };
  34. var __generator = (this && this.__generator) || function (thisArg, body) {
  35. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  36. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  37. function verb(n) { return function (v) { return step([n, v]); }; }
  38. function step(op) {
  39. if (f) throw new TypeError("Generator is already executing.");
  40. while (_) try {
  41. if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
  42. if (y = 0, t) op = [op[0] & 2, t.value];
  43. switch (op[0]) {
  44. case 0: case 1: t = op; break;
  45. case 4: _.label++; return { value: op[1], done: false };
  46. case 5: _.label++; y = op[1]; op = [0]; continue;
  47. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  48. default:
  49. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  50. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  51. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  52. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  53. if (t[2]) _.ops.pop();
  54. _.trys.pop(); continue;
  55. }
  56. op = body.call(thisArg, _);
  57. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  58. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  59. }
  60. };
  61. Object.defineProperty(exports, "__esModule", { value: true });
  62. exports.Alt = exports.chainFirst = exports.Chain = exports.ApplicativeSeq = exports.ApplySeq = exports.ApplicativePar = exports.apSecond = exports.apFirst = exports.ApplyPar = exports.Pointed = exports.flap = exports.Functor = exports.URI = exports.partitionMap = exports.partition = exports.filterMap = exports.filter = exports.separate = exports.compact = exports.none = exports.zero = exports.altW = exports.alt = exports.flatten = exports.chain = exports.of = exports.ap = exports.map = exports.chainOptionK = exports.fromOptionK = exports.chainNullableK = exports.fromNullableK = exports.tryCatchK = exports.tryCatch = exports.fromNullable = exports.getOrElseW = exports.getOrElse = exports.foldW = exports.matchEW = exports.fold = exports.matchE = exports.matchW = exports.match = exports.fromTaskEither = exports.fromTask = exports.fromIO = exports.fromEither = exports.fromOption = exports.fromPredicate = exports.some = void 0;
  63. exports.sequenceSeqArray = exports.traverseSeqArray = exports.traverseSeqArrayWithIndex = exports.sequenceArray = exports.traverseArray = exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndexSeq = exports.traverseReadonlyNonEmptyArrayWithIndexSeq = exports.traverseReadonlyArrayWithIndex = exports.traverseReadonlyNonEmptyArrayWithIndex = exports.ApT = exports.apS = exports.bind = exports.let = exports.bindTo = exports.Do = exports.chainFirstTaskK = exports.chainTaskK = exports.fromTaskK = exports.FromTask = exports.chainFirstEitherK = exports.chainEitherK = exports.fromEitherK = exports.FromEither = exports.chainFirstIOK = exports.chainIOK = exports.fromIOK = exports.FromIO = exports.Filterable = exports.Compactable = exports.MonadTask = exports.MonadIO = exports.Monad = exports.Alternative = exports.guard = exports.Zero = void 0;
  64. var Apply_1 = require("./Apply");
  65. var Chain_1 = require("./Chain");
  66. var Compactable_1 = require("./Compactable");
  67. var Filterable_1 = require("./Filterable");
  68. var FromEither_1 = require("./FromEither");
  69. var FromIO_1 = require("./FromIO");
  70. var FromTask_1 = require("./FromTask");
  71. var function_1 = require("./function");
  72. var Functor_1 = require("./Functor");
  73. var _ = __importStar(require("./internal"));
  74. var O = __importStar(require("./Option"));
  75. var OT = __importStar(require("./OptionT"));
  76. var T = __importStar(require("./Task"));
  77. var Zero_1 = require("./Zero");
  78. // -------------------------------------------------------------------------------------
  79. // constructors
  80. // -------------------------------------------------------------------------------------
  81. /**
  82. * @category constructors
  83. * @since 2.10.0
  84. */
  85. exports.some = OT.some(T.Pointed);
  86. /**
  87. * @category lifting
  88. * @since 2.10.0
  89. */
  90. exports.fromPredicate = OT.fromPredicate(T.Pointed);
  91. // -------------------------------------------------------------------------------------
  92. // conversions
  93. // -------------------------------------------------------------------------------------
  94. /**
  95. * @category conversions
  96. * @since 2.10.0
  97. */
  98. exports.fromOption = T.of;
  99. /**
  100. * @category conversions
  101. * @since 2.10.0
  102. */
  103. exports.fromEither = OT.fromEither(T.Pointed);
  104. /**
  105. * @category conversions
  106. * @since 2.10.0
  107. */
  108. var fromIO = function (ma) { return (0, exports.fromTask)(T.fromIO(ma)); };
  109. exports.fromIO = fromIO;
  110. /**
  111. * @category conversions
  112. * @since 2.10.0
  113. */
  114. exports.fromTask = OT.fromF(T.Functor);
  115. /**
  116. * @category conversions
  117. * @since 2.11.0
  118. */
  119. exports.fromTaskEither = T.map(O.fromEither);
  120. /**
  121. * @category pattern matching
  122. * @since 2.10.0
  123. */
  124. exports.match =
  125. /*#__PURE__*/ OT.match(T.Functor);
  126. /**
  127. * Less strict version of [`match`](#match).
  128. *
  129. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  130. *
  131. * @category pattern matching
  132. * @since 2.10.0
  133. */
  134. exports.matchW = exports.match;
  135. /**
  136. * The `E` suffix (short for **E**ffect) means that the handlers return an effect (`Task`).
  137. *
  138. * @category pattern matching
  139. * @since 2.10.0
  140. */
  141. exports.matchE =
  142. /*#__PURE__*/ OT.matchE(T.Chain);
  143. /**
  144. * Alias of [`matchE`](#matche).
  145. *
  146. * @category pattern matching
  147. * @since 2.10.0
  148. */
  149. exports.fold = exports.matchE;
  150. /**
  151. * Less strict version of [`matchE`](#matche).
  152. *
  153. * The `W` suffix (short for **W**idening) means that the handler return types will be merged.
  154. *
  155. * @category pattern matching
  156. * @since 2.10.0
  157. */
  158. exports.matchEW = exports.matchE;
  159. /**
  160. * Alias of [`matchEW`](#matchew).
  161. *
  162. * @category pattern matching
  163. * @since 2.10.0
  164. */
  165. exports.foldW = exports.matchEW;
  166. /**
  167. * @category error handling
  168. * @since 2.10.0
  169. */
  170. exports.getOrElse = OT.getOrElse(T.Monad);
  171. /**
  172. * Less strict version of [`getOrElse`](#getorelse).
  173. *
  174. * The `W` suffix (short for **W**idening) means that the handler return type will be merged.
  175. *
  176. * @category error handling
  177. * @since 2.10.0
  178. */
  179. exports.getOrElseW = exports.getOrElse;
  180. /**
  181. * @category conversions
  182. * @since 2.10.0
  183. */
  184. exports.fromNullable = OT.fromNullable(T.Pointed);
  185. /**
  186. * Transforms a `Promise` that may reject to a `Promise` that never rejects and returns an `Option` instead.
  187. *
  188. * See also [`tryCatchK`](#trycatchk).
  189. *
  190. * @category interop
  191. * @since 2.10.0
  192. */
  193. var tryCatch = function (f) {
  194. return function () { return __awaiter(void 0, void 0, void 0, function () {
  195. var reason_1;
  196. return __generator(this, function (_a) {
  197. switch (_a.label) {
  198. case 0:
  199. _a.trys.push([0, 2, , 3]);
  200. return [4 /*yield*/, f().then(_.some)];
  201. case 1: return [2 /*return*/, _a.sent()];
  202. case 2:
  203. reason_1 = _a.sent();
  204. return [2 /*return*/, _.none];
  205. case 3: return [2 /*return*/];
  206. }
  207. });
  208. }); };
  209. };
  210. exports.tryCatch = tryCatch;
  211. /**
  212. * Converts a function returning a `Promise` to one returning a `TaskOption`.
  213. *
  214. * @category interop
  215. * @since 2.10.0
  216. */
  217. var tryCatchK = function (f) {
  218. return function () {
  219. var a = [];
  220. for (var _i = 0; _i < arguments.length; _i++) {
  221. a[_i] = arguments[_i];
  222. }
  223. return (0, exports.tryCatch)(function () { return f.apply(void 0, a); });
  224. };
  225. };
  226. exports.tryCatchK = tryCatchK;
  227. /**
  228. * @category lifting
  229. * @since 2.10.0
  230. */
  231. exports.fromNullableK = OT.fromNullableK(T.Pointed);
  232. /**
  233. * @category sequencing
  234. * @since 2.10.0
  235. */
  236. exports.chainNullableK = OT.chainNullableK(T.Monad);
  237. // -------------------------------------------------------------------------------------
  238. // combinators
  239. // -------------------------------------------------------------------------------------
  240. /**
  241. * @category lifting
  242. * @since 2.10.0
  243. */
  244. exports.fromOptionK = OT.fromOptionK(T.Pointed);
  245. /**
  246. * @category sequencing
  247. * @since 2.10.0
  248. */
  249. exports.chainOptionK =
  250. /*#__PURE__*/ OT.chainOptionK(T.Monad);
  251. /**
  252. * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F<A>) => F<B>` whose argument and return types
  253. * use the type constructor `F` to represent some computational context.
  254. *
  255. * @category mapping
  256. * @since 2.10.0
  257. */
  258. exports.map = OT.map(T.Functor);
  259. /**
  260. * @since 2.10.0
  261. */
  262. exports.ap = OT.ap(T.ApplyPar);
  263. /**
  264. * @category constructors
  265. * @since 2.10.0
  266. */
  267. exports.of = exports.some;
  268. /**
  269. * @category sequencing
  270. * @since 2.10.0
  271. */
  272. exports.chain = OT.chain(T.Monad);
  273. /**
  274. * @category sequencing
  275. * @since 2.10.0
  276. */
  277. exports.flatten = (0, exports.chain)(function_1.identity);
  278. /**
  279. * @category error handling
  280. * @since 2.10.0
  281. */
  282. exports.alt = OT.alt(T.Monad);
  283. /**
  284. * Less strict version of [`alt`](#alt).
  285. *
  286. * The `W` suffix (short for **W**idening) means that the return types will be merged.
  287. *
  288. * @category error handling
  289. * @since 2.10.0
  290. */
  291. exports.altW = exports.alt;
  292. /**
  293. * @since 2.10.0
  294. */
  295. exports.zero = OT.zero(T.Pointed);
  296. /**
  297. * @category constructors
  298. * @since 2.10.0
  299. */
  300. exports.none = (0, exports.zero)();
  301. /**
  302. * @category filtering
  303. * @since 2.10.0
  304. */
  305. exports.compact = (0, Compactable_1.compact)(T.Functor, O.Compactable);
  306. /**
  307. * @category filtering
  308. * @since 2.10.0
  309. */
  310. exports.separate = (0, Compactable_1.separate)(T.Functor, O.Compactable, O.Functor);
  311. /**
  312. * @category filtering
  313. * @since 2.10.0
  314. */
  315. exports.filter = (0, Filterable_1.filter)(T.Functor, O.Filterable);
  316. /**
  317. * @category filtering
  318. * @since 2.10.0
  319. */
  320. exports.filterMap =
  321. /*#__PURE__*/ (0, Filterable_1.filterMap)(T.Functor, O.Filterable);
  322. /**
  323. * @category filtering
  324. * @since 2.10.0
  325. */
  326. exports.partition = (0, Filterable_1.partition)(T.Functor, O.Filterable);
  327. /**
  328. * @category filtering
  329. * @since 2.10.0
  330. */
  331. exports.partitionMap = (0, Filterable_1.partitionMap)(T.Functor, O.Filterable);
  332. // -------------------------------------------------------------------------------------
  333. // instances
  334. // -------------------------------------------------------------------------------------
  335. var _map = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.map)(f)); };
  336. var _ap = function (fab, fa) { return (0, function_1.pipe)(fab, (0, exports.ap)(fa)); };
  337. /* istanbul ignore next */
  338. var _chain = function (ma, f) { return (0, function_1.pipe)(ma, (0, exports.chain)(f)); };
  339. /* istanbul ignore next */
  340. var _alt = function (fa, that) { return (0, function_1.pipe)(fa, (0, exports.alt)(that)); };
  341. /* istanbul ignore next */
  342. var _filter = function (fa, predicate) {
  343. return (0, function_1.pipe)(fa, (0, exports.filter)(predicate));
  344. };
  345. /* istanbul ignore next */
  346. var _filterMap = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.filterMap)(f)); };
  347. /* istanbul ignore next */
  348. var _partition = function (fa, predicate) {
  349. return (0, function_1.pipe)(fa, (0, exports.partition)(predicate));
  350. };
  351. /* istanbul ignore next */
  352. var _partitionMap = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.partitionMap)(f)); };
  353. /**
  354. * @category type lambdas
  355. * @since 2.10.0
  356. */
  357. exports.URI = 'TaskOption';
  358. /**
  359. * @category instances
  360. * @since 2.10.0
  361. */
  362. exports.Functor = {
  363. URI: exports.URI,
  364. map: _map
  365. };
  366. /**
  367. * @category mapping
  368. * @since 2.10.0
  369. */
  370. exports.flap = (0, Functor_1.flap)(exports.Functor);
  371. /**
  372. * @category instances
  373. * @since 2.10.0
  374. */
  375. exports.Pointed = {
  376. URI: exports.URI,
  377. of: exports.of
  378. };
  379. /**
  380. * Runs computations in parallel.
  381. *
  382. * @category instances
  383. * @since 2.10.0
  384. */
  385. exports.ApplyPar = {
  386. URI: exports.URI,
  387. map: _map,
  388. ap: _ap
  389. };
  390. /**
  391. * Combine two effectful actions, keeping only the result of the first.
  392. *
  393. * @since 2.10.0
  394. */
  395. exports.apFirst = (0, Apply_1.apFirst)(exports.ApplyPar);
  396. /**
  397. * Combine two effectful actions, keeping only the result of the second.
  398. *
  399. * @since 2.10.0
  400. */
  401. exports.apSecond = (0, Apply_1.apSecond)(exports.ApplyPar);
  402. /**
  403. * Runs computations in parallel.
  404. *
  405. * @category instances
  406. * @since 2.10.0
  407. */
  408. exports.ApplicativePar = {
  409. URI: exports.URI,
  410. map: _map,
  411. ap: _ap,
  412. of: exports.of
  413. };
  414. var _apSeq = function (fab, fa) {
  415. return (0, function_1.pipe)(fab, (0, exports.chain)(function (f) { return (0, function_1.pipe)(fa, (0, exports.map)(f)); }));
  416. };
  417. /**
  418. * Runs computations sequentially.
  419. *
  420. * @category instances
  421. * @since 2.10.0
  422. */
  423. exports.ApplySeq = {
  424. URI: exports.URI,
  425. map: _map,
  426. ap: _apSeq
  427. };
  428. /**
  429. * Runs computations sequentially.
  430. *
  431. * @category instances
  432. * @since 2.10.0
  433. */
  434. exports.ApplicativeSeq = {
  435. URI: exports.URI,
  436. map: _map,
  437. ap: _apSeq,
  438. of: exports.of
  439. };
  440. /**
  441. * @category instances
  442. * @since 2.10.0
  443. */
  444. exports.Chain = {
  445. URI: exports.URI,
  446. map: _map,
  447. ap: _ap,
  448. chain: _chain
  449. };
  450. /**
  451. * Composes computations in sequence, using the return value of one computation to determine the next computation and
  452. * keeping only the result of the first.
  453. *
  454. * @category sequencing
  455. * @since 2.10.0
  456. */
  457. exports.chainFirst =
  458. /*#__PURE__*/ (0, Chain_1.chainFirst)(exports.Chain);
  459. /**
  460. * @category instances
  461. * @since 2.10.0
  462. */
  463. exports.Alt = {
  464. URI: exports.URI,
  465. map: _map,
  466. alt: _alt
  467. };
  468. /**
  469. * @category instances
  470. * @since 2.11.0
  471. */
  472. exports.Zero = {
  473. URI: exports.URI,
  474. zero: exports.zero
  475. };
  476. /**
  477. * @category do notation
  478. * @since 2.11.0
  479. */
  480. exports.guard = (0, Zero_1.guard)(exports.Zero, exports.Pointed);
  481. /**
  482. * @category instances
  483. * @since 2.10.0
  484. */
  485. exports.Alternative = {
  486. URI: exports.URI,
  487. map: _map,
  488. ap: _ap,
  489. of: exports.of,
  490. alt: _alt,
  491. zero: exports.zero
  492. };
  493. /**
  494. * @category instances
  495. * @since 2.10.0
  496. */
  497. exports.Monad = {
  498. URI: exports.URI,
  499. map: _map,
  500. ap: _ap,
  501. of: exports.of,
  502. chain: _chain
  503. };
  504. /**
  505. * @category instances
  506. * @since 2.10.0
  507. */
  508. exports.MonadIO = {
  509. URI: exports.URI,
  510. map: _map,
  511. ap: _ap,
  512. of: exports.of,
  513. chain: _chain,
  514. fromIO: exports.fromIO
  515. };
  516. /**
  517. * @category instances
  518. * @since 2.10.0
  519. */
  520. exports.MonadTask = {
  521. URI: exports.URI,
  522. map: _map,
  523. ap: _ap,
  524. of: exports.of,
  525. chain: _chain,
  526. fromIO: exports.fromIO,
  527. fromTask: exports.fromTask
  528. };
  529. /**
  530. * @category instances
  531. * @since 2.10.0
  532. */
  533. exports.Compactable = {
  534. URI: exports.URI,
  535. compact: exports.compact,
  536. separate: exports.separate
  537. };
  538. /**
  539. * @category instances
  540. * @since 2.10.0
  541. */
  542. exports.Filterable = {
  543. URI: exports.URI,
  544. map: _map,
  545. compact: exports.compact,
  546. separate: exports.separate,
  547. filter: _filter,
  548. filterMap: _filterMap,
  549. partition: _partition,
  550. partitionMap: _partitionMap
  551. };
  552. /**
  553. * @category instances
  554. * @since 2.10.0
  555. */
  556. exports.FromIO = {
  557. URI: exports.URI,
  558. fromIO: exports.fromIO
  559. };
  560. /**
  561. * @category lifting
  562. * @since 2.10.0
  563. */
  564. exports.fromIOK =
  565. /*#__PURE__*/ (0, FromIO_1.fromIOK)(exports.FromIO);
  566. /**
  567. * @category sequencing
  568. * @since 2.10.0
  569. */
  570. exports.chainIOK = (0, FromIO_1.chainIOK)(exports.FromIO, exports.Chain);
  571. /**
  572. * @category sequencing
  573. * @since 2.10.0
  574. */
  575. exports.chainFirstIOK =
  576. /*#__PURE__*/ (0, FromIO_1.chainFirstIOK)(exports.FromIO, exports.Chain);
  577. /**
  578. * @category instances
  579. * @since 2.11.0
  580. */
  581. exports.FromEither = {
  582. URI: exports.URI,
  583. fromEither: exports.fromEither
  584. };
  585. /**
  586. * @category lifting
  587. * @since 2.12.0
  588. */
  589. exports.fromEitherK = (0, FromEither_1.fromEitherK)(exports.FromEither);
  590. /**
  591. * @category sequencing
  592. * @since 2.12.0
  593. */
  594. exports.chainEitherK =
  595. /*#__PURE__*/ (0, FromEither_1.chainEitherK)(exports.FromEither, exports.Chain);
  596. /**
  597. * @category sequencing
  598. * @since 2.12.0
  599. */
  600. exports.chainFirstEitherK =
  601. /*#__PURE__*/ (0, FromEither_1.chainFirstEitherK)(exports.FromEither, exports.Chain);
  602. /**
  603. * @category instances
  604. * @since 2.10.0
  605. */
  606. exports.FromTask = {
  607. URI: exports.URI,
  608. fromIO: exports.fromIO,
  609. fromTask: exports.fromTask
  610. };
  611. /**
  612. * @category lifting
  613. * @since 2.10.0
  614. */
  615. exports.fromTaskK =
  616. /*#__PURE__*/ (0, FromTask_1.fromTaskK)(exports.FromTask);
  617. /**
  618. * @category sequencing
  619. * @since 2.10.0
  620. */
  621. exports.chainTaskK =
  622. /*#__PURE__*/ (0, FromTask_1.chainTaskK)(exports.FromTask, exports.Chain);
  623. /**
  624. * @category sequencing
  625. * @since 2.10.0
  626. */
  627. exports.chainFirstTaskK =
  628. /*#__PURE__*/ (0, FromTask_1.chainFirstTaskK)(exports.FromTask, exports.Chain);
  629. // -------------------------------------------------------------------------------------
  630. // do notation
  631. // -------------------------------------------------------------------------------------
  632. /**
  633. * @category do notation
  634. * @since 2.10.0
  635. */
  636. exports.Do = (0, exports.of)(_.emptyRecord);
  637. /**
  638. * @category do notation
  639. * @since 2.10.0
  640. */
  641. exports.bindTo = (0, Functor_1.bindTo)(exports.Functor);
  642. var let_ = /*#__PURE__*/ (0, Functor_1.let)(exports.Functor);
  643. exports.let = let_;
  644. /**
  645. * @category do notation
  646. * @since 2.10.0
  647. */
  648. exports.bind = (0, Chain_1.bind)(exports.Chain);
  649. /**
  650. * @category do notation
  651. * @since 2.10.0
  652. */
  653. exports.apS = (0, Apply_1.apS)(exports.ApplyPar);
  654. /**
  655. * @since 2.11.0
  656. */
  657. exports.ApT = (0, exports.of)(_.emptyReadonlyArray);
  658. // -------------------------------------------------------------------------------------
  659. // array utils
  660. // -------------------------------------------------------------------------------------
  661. /**
  662. * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativePar)`.
  663. *
  664. * @category traversing
  665. * @since 2.11.0
  666. */
  667. var traverseReadonlyNonEmptyArrayWithIndex = function (f) {
  668. return (0, function_1.flow)(T.traverseReadonlyNonEmptyArrayWithIndex(f), T.map(O.traverseReadonlyNonEmptyArrayWithIndex(function_1.SK)));
  669. };
  670. exports.traverseReadonlyNonEmptyArrayWithIndex = traverseReadonlyNonEmptyArrayWithIndex;
  671. /**
  672. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativePar)`.
  673. *
  674. * @category traversing
  675. * @since 2.11.0
  676. */
  677. var traverseReadonlyArrayWithIndex = function (f) {
  678. var g = (0, exports.traverseReadonlyNonEmptyArrayWithIndex)(f);
  679. return function (as) { return (_.isNonEmpty(as) ? g(as) : exports.ApT); };
  680. };
  681. exports.traverseReadonlyArrayWithIndex = traverseReadonlyArrayWithIndex;
  682. /**
  683. * Equivalent to `ReadonlyNonEmptyArray#traverseWithIndex(ApplicativeSeq)`.
  684. *
  685. * @category traversing
  686. * @since 2.11.0
  687. */
  688. var traverseReadonlyNonEmptyArrayWithIndexSeq = function (f) {
  689. return function (as) {
  690. return function () {
  691. return _.tail(as).reduce(function (acc, a, i) {
  692. return acc.then(function (obs) {
  693. return _.isNone(obs)
  694. ? acc
  695. : f(i + 1, a)().then(function (ob) {
  696. if (_.isNone(ob)) {
  697. return ob;
  698. }
  699. obs.value.push(ob.value);
  700. return obs;
  701. });
  702. });
  703. }, f(0, _.head(as))().then(O.map(_.singleton)));
  704. };
  705. };
  706. };
  707. exports.traverseReadonlyNonEmptyArrayWithIndexSeq = traverseReadonlyNonEmptyArrayWithIndexSeq;
  708. /**
  709. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  710. *
  711. * @category traversing
  712. * @since 2.11.0
  713. */
  714. var traverseReadonlyArrayWithIndexSeq = function (f) {
  715. var g = (0, exports.traverseReadonlyNonEmptyArrayWithIndexSeq)(f);
  716. return function (as) { return (_.isNonEmpty(as) ? g(as) : exports.ApT); };
  717. };
  718. exports.traverseReadonlyArrayWithIndexSeq = traverseReadonlyArrayWithIndexSeq;
  719. /**
  720. * Equivalent to `ReadonlyArray#traverseWithIndex(Applicative)`.
  721. *
  722. * @category traversing
  723. * @since 2.10.0
  724. */
  725. exports.traverseArrayWithIndex = exports.traverseReadonlyArrayWithIndex;
  726. /**
  727. * Equivalent to `ReadonlyArray#traverse(Applicative)`.
  728. *
  729. * @category traversing
  730. * @since 2.10.0
  731. */
  732. var traverseArray = function (f) { return (0, exports.traverseReadonlyArrayWithIndex)(function (_, a) { return f(a); }); };
  733. exports.traverseArray = traverseArray;
  734. /**
  735. * Equivalent to `ReadonlyArray#sequence(Applicative)`.
  736. *
  737. * @category traversing
  738. * @since 2.10.0
  739. */
  740. exports.sequenceArray =
  741. /*#__PURE__*/ (0, exports.traverseArray)(function_1.identity);
  742. /**
  743. * Equivalent to `ReadonlyArray#traverseWithIndex(ApplicativeSeq)`.
  744. *
  745. * @category traversing
  746. * @since 2.10.0
  747. */
  748. exports.traverseSeqArrayWithIndex = exports.traverseReadonlyArrayWithIndexSeq;
  749. /**
  750. * Equivalent to `ReadonlyArray#traverse(ApplicativeSeq)`.
  751. *
  752. * @category traversing
  753. * @since 2.10.0
  754. */
  755. var traverseSeqArray = function (f) { return (0, exports.traverseReadonlyArrayWithIndexSeq)(function (_, a) { return f(a); }); };
  756. exports.traverseSeqArray = traverseSeqArray;
  757. /**
  758. * Equivalent to `ReadonlyArray#sequence(ApplicativeSeq)`.
  759. *
  760. * @category traversing
  761. * @since 2.10.0
  762. */
  763. exports.sequenceSeqArray =
  764. /*#__PURE__*/ (0, exports.traverseSeqArray)(function_1.identity);