假设我有两个功能:
b2c :: B -> Either String C
a2bs :: A -> [[B]]
如何使用 b2c
和 a2bs
创建以下 a2cs
函数,以便 [[ 中是否有任何 Left 值字符串 c]]
则 字符串 [[c]]
应该是 Left 值?
a2cs :: A -> Either String [[C]]
最佳答案
我会这样写:
a2cs = traverse (traverse b2c) . a2bs
尽管这并不完全使用您建议的实现策略,即首先生成 [[Either String C]]
,然后将其展平为 Either String [[C]]
,它的优点是只需要一次遍历嵌套列表,而不是您的策略所需的两次。
关于haskell - 如何将 `[[Either String c]]` 转换为 `Either String [[c]]` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53727865/