λ: folktale data.task - применить неизвестное количество задач

Я хочу преобразовать список идентификаторов в список Tasks и запустить их одновременно, аналогично Promise.all, Мне известны аппликативы, но я хочу применить неизвестное количество задач, поэтому не верю, что это будет лучшим подходом.

Скажи у меня есть Task который содержит массив Task "S.

Task.of([Task.of(1), Task.of(2)])

Есть ли в любом случае сложить задачи в одну задачу, которая будет выполнять их все, или есть лучший способ, которым я могу справиться с преобразованием данных.

Фрагмент имеет data.Task включены, что вы можете скопировать, если вы хотите предоставить пример.

http://folktalegithubio.readthedocs.io/en/latest/api/data/task/

// Task([Task])
Task.of([0, 1, 2])
  .map(t => t.map(Task.of))
  .fork(console.error, console.log)
<script src="https://codepen.io/synthet1c/pen/bWOZEM.js"></script>

1 ответ

Решение

control.async.parallel это именно то, что вы ищете.

Мне известны аппликативы, но я хочу применить неизвестное количество задач, поэтому не верю, что это будет лучшим подходом.

Это не должно вас сдерживать, массивы проходимы и sequenceA будет делать именно то, что вы хотели (хотя и довольно неэффективно). Если это было реализовано в народной сказке, которая не имеет списков или даже control.applicative,

control.monad.sequence должен был работать так же, как аппликативная последовательность, но излишне использует chain вместо ap, А также data.task в любом случае проблематично ap не выводится из chain с той же семантикой.

Другие вопросы по тегам