Ho una lista di stringhe, e provato questo:Haskell: impossibile usare "map putStrLn"?
ls = [ "banana", "mango", "orange" ]
main = do
map PutStrLn list_of_strings
che non ha funzionato, e non riesco a capire il perché.
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'
Eventuali suggerimenti? Suppongo che abbia a che fare con la mappa che restituisce una lista e non un valore, ma non ho trovato un modo semplice per risolvere questo problema.
In questo momento, l'unico modo che conosco per stampare un elenco di stringhe è scrivere una funzione che itererà l'elenco, stampando ogni elemento (stampa se l'elenco è [a], ma stampa e riceva se è (a: b)). Ma sarebbe molto più semplice da usare per la mappa ...
Grazie!
Qualcosa che vorrei aver imparato molto prima era che c'è un'altra mappaM definita in Data.Traversable. Questa mappaM lavora più strutture dati oltre a liste, come mappe e array. –
Ho sempre pensato che 'main' dovrebbe essere di tipo' IO() ', non si sa mai che potrebbe essere 'forall t. IO t'. Questo mostra come puoi imparare qualcosa di nuovo ogni giorno :-) –