版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.
 
 
 
 

39 строки
1.3 KiB

  1. import { getFoldableComposition } from './Foldable';
  2. import { pipe } from './function';
  3. import { getFunctorComposition } from './Functor';
  4. export function traverse(T, G) {
  5. return function (F) {
  6. var traverseT = T.traverse(F);
  7. var traverseG = G.traverse(F);
  8. return function (f) { return function (fga) { return traverseT(fga, function (ga) { return traverseG(ga, f); }); }; };
  9. };
  10. }
  11. export function sequence(T, G) {
  12. return function (F) {
  13. var sequenceT = T.sequence(F);
  14. var sequenceG = G.sequence(F);
  15. return function (fgha) { return sequenceT(T.map(fgha, sequenceG)); };
  16. };
  17. }
  18. /** @deprecated */
  19. export function getTraversableComposition(F, G) {
  20. var map = getFunctorComposition(F, G).map;
  21. var FC = getFoldableComposition(F, G);
  22. var _traverse = traverse(F, G);
  23. var _sequence = sequence(F, G);
  24. return {
  25. map: map,
  26. reduce: FC.reduce,
  27. foldMap: FC.foldMap,
  28. reduceRight: FC.reduceRight,
  29. traverse: function (H) {
  30. var traverseH = _traverse(H);
  31. return function (fga, f) { return pipe(fga, traverseH(f)); };
  32. },
  33. sequence: function (H) {
  34. var sequenceH = _sequence(H);
  35. return function (fgha) { return pipe(fgha, sequenceH); };
  36. }
  37. };
  38. }