【发布时间】:2023-03-29 03:17:01
【问题描述】:
在 fp-ts 中,我如何从 ReaderEither<R, E, A>[] 转到 ReaderEither<R, E[], A[]>?本质上,我想将一组 ReaderEither 实例转换为单个 ReaderEither 实例。
我曾尝试寻找答案,但运气不佳。我是函数式编程和 fp-ts 的新手,所以我仍在尝试围绕所有概念并将它们付诸实践。感谢您的帮助。
【问题讨论】:
-
我相信 Traversable 可能是关键。我找到了一些将它与 Option 和 Either 一起使用的示例,但我无法让它与 ReaderEither 一起使用。 gcanti.github.io/fp-ts/modules/Traversable.ts.html
-
您可以从
ReaderEither<R, E, A>[]和sequenceT获得ReaderEither<R, E, A[]>,但我不确定如何累积错误。 -
您确定要
ReaderEither<R, E[], A[]>吗?这与Reader<R, Either<E[], A[]>>相同;你想要Reader<R, Either<E, A>[]>吗? -
是的,我希望将结果累积到一个
Either,而不是多个Either -
您希望它如何工作?如果一些
ReaderEithers 返回一个Left而一些返回一个Right怎么办?您是否希望最终的Either依赖于第一个ReaderEither(例如,如果第一个ReaderEither返回一个Left,则通过累积另一个Lefts 来返回一个Left<E[]>并丢弃Rights)?如果ReaderEither<R, E, A>[]为空怎么办?
标签: typescript functional-programming fp-ts