我正在尝试使用scanl
Haskell 中的函数。我已经缩小了我的问题范围,可以在以下两种情况下描述,可以使用 Haskell 中的普通库在解释器中运行,该库包含(请注意,我不一定对这里的 Monadic 值感兴趣,但只是scanl
如何用于scanl
确保类型一致性):
为什么以下预先列出Right value
的工作有效:
*Defs> scanl (\x acc -> x ++ acc) [] [[(Right 1)], [(Right 2)]]
[[],[Right 1],[Right 1,Right 2]]
当这不起作用并导致以下错误消息时:
*Defs> scanl (\x acc -> [x] ++ acc) [] [(Right 1), (Right 2)]
<interactive>:36:35: error:
* Couldn't match expected type `[[a]]'
with actual type `Either a0 b0'
...