que tienen una lista de cadenas, y probamos este:Haskell: no se puede usar "map putStrLn"?
ls = [ "banana", "mango", "orange" ]
main = do
map PutStrLn list_of_strings
eso no funcionó, y no puedo entender por qué.
ghc print-list.hs
print-list.hs:3:0:
Couldn't match expected type `IO t' against inferred type `[IO()]'
In the expression: main
When checking the type of the function `main'
¿Alguna sugerencia? Supongo que tiene que ver con que el mapa devuelva una lista y no un valor, pero no encontré una manera fácil de arreglar esto.
En este momento, la única manera que conozco de imprimir una lista de cadenas es escribir una función que iterará la lista, imprimiendo cada elemento (imprimir si la lista es [a], pero imprimir y recursar si es (a: segundo)). Pero sería mucho más fácil de usar el mapa ...
¡Gracias!
Algo que ojalá hubiera aprendido mucho antes es que hay otro mapM definido en Data.Traversable. Este mapM trabaja más estructuras de datos además de listas, como mapas y matrices. –
Siempre pensé que 'main' debería ser de tipo' IO() ', nunca supe que podría ser' forall t. IO t'. Eso muestra cómo puedes aprender algo nuevo cada día :-) –