mam listy ciągów i wypróbowane to:Haskell: nie można użyć "map putStrLn"?
ls = [ "banana", "mango", "orange" ]
main = do
map PutStrLn list_of_strings
To nie działa, i nie mogę zrozumieć, dlaczego.
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'
Jakieś wskazówki? Przypuszczam, że ma to związek z mapą zwracającą listę, a nie wartością, ale nie znalazłem łatwego sposobu na rozwiązanie tego problemu.
W tej chwili jedynym sposobem, w jaki mogę wydrukować listę napisów, jest napisanie funkcji, która będzie iterować listę, drukowanie każdego elementu (drukowanie, jeśli lista jest [a], ale drukowanie i rekurencja, jeśli jest (a: b)). Ale byłoby to znacznie łatwiejsze w użyciu, gdybym używał mapy ...
Dzięki!
Coś, czego chciałbym się nauczyć wcześniej, było to, że istnieje inna mapa M zdefiniowana w Data.Traversable. Ta mapaM działa więcej struktur danych oprócz list, takich jak mapy i tablice. –
Zawsze uważałem, że 'main' powinno być typu' IO() ', nigdy nie wiedziałem, że może to być' na wszelki wypadek '. IO t'. To pokazuje, jak możesz nauczyć się czegoś nowego każdego dnia :-) –