Я начал свой Великий Крестовый поход Хаскелла (GHC:)), и я немного смущен монадами и функциями IO. Может ли кто-нибудь объяснить просто, в чем разница между этими двумя функциями?
f1 = do x <- [1,2]
[x, x+1] -- this is monad, right?
f2 = do x <- [1,2]
return [x, x+1]
Результаты:
*Main> f1
[1,2,2,3]
*Main> f2
[[1,2],[2,3]]