λ: 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
с той же семантикой.