Я начал свой Великий крестовый поход на Haskell (GHC:))и я немного запутался с монадами и функциями ввода-вывода. Может ли кто-нибудь объяснить просто , в чем разница между этими двумя функциями?
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]]