Использование возврата и неиспользование возврата в монаде списка

Я начал свой Великий крестовый поход на 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]]
37
задан Ashe 4 July 2012 в 06:35
поделиться