haskell - 如何将 `[[Either String c]]` 转换为 `Either String [[c]]` ?

标签 haskell

假设我有两个功能:

b2c :: B -> Either String C
a2bs :: A -> [[B]]

如何使用 b2ca2bs 创建以下 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/

相关文章:

haskell - 你如何在haskell中使用元素之间可变距离的范围

haskell - Rank2Types 的目的是什么?

haskell - 使用 ghc 专门研究类型类

c - Haskell FFI/C MPFR 库包装问题

list - Haskell 列表理解 - 所有列表拆分的列表

haskell - 与分数相关的类型错误

haskell - 使用 Haskell 下载维基百科标记

haskell - 函数 `(y * y) < x' 应用于两个参数,但它的类型 `Bool' 没有

haskell - 如何停止 Gloss 需要增加内存量?

haskell - 为什么我的 Haskell 函数不接受负数?