λ: folktale data.task - 应用未知数量的任务

λ: folktale data.task - apply an unknown number of Tasks

我想将一个 id 列表转换为一个 Tasks 列表,并且同时 运行 它们,类似于 Promise.all。我知道应用程序,但我想应用未知数量的任务,所以我认为这不是最好的方法。

假设我有一个 Task,其中包含一个 Task 的数组。

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>

control.async.parallel 正是您要找的。

I am aware of applicatives, but I want to apply an unknown number of tasks so I don't believe that will be the best approach.

这不应该让你退缩,数组是可遍历的,sequenceA 会完全按照你的要求去做(尽管效率很低)。如果它是在民间故事中实现的,它没有列表甚至 control.applicative.

control.monad.sequence 应该与应用序列一样工作,但不必要地使用 chain 而不是 ap。而且 data.task 无论如何都是有问题的,因为 ap 不能从具有相同语义的 chain 派生。