Estou tentando usar a scanl
função em Haskell. Reduzi meu problema, que pode ser descrito nos dois casos a seguir, que podem ser executados no interpretador usando apenas uma biblioteca normal dentro de Haskell que contém o (observe que não estou necessariamente scanl
interessado no valor monádico aqui, mas apenas como usar scanl
para garantir uma consistência de tipo):
Por que o seguinte com Right value
o trabalho pré-listado funciona:
*Defs> scanl (\x acc -> x ++ acc) [] [[(Right 1)], [(Right 2)]]
[[],[Right 1],[Right 1,Right 2]]
quando isso não funciona e causa a seguinte mensagem de erro:
*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'
...