Jestem na rozdziale I/O realnego świata Haskella. Monady nie są omawiane w książce przez kolejne 7 rozdziałów. Co oznacza, że moje rozumienie I/O jest w najlepszym przypadku niekompletne.map versus mapM behavior
Teraz próbuję zrozumieć funkcję mapM. Jak rozumiem, funkcja "wykonuje" każdy element na liście, który musi być "akcją" (IO monada).
To, co nie ma sensu, to this example. Dlaczego mapM zwraca inny wynik niż mapa dla tych samych argumentów?
Prelude> map (\x -> [x]) [0, 1, 2] [[0],[1],[2]] Prelude> mapM (\x -> [x]) [0, 1, 2] [[0,1,2]]
również zabawa: 'length (mapM (\\ _-> a) b) == length a^length b'. Myślę. – muhmuhten