Почему применение `sequence` в списке списков приводит к вычислению его декартова произведения?

Мой вопрос касается функции sequence в Prelude , подпись которой следующая:

sequence :: Monad m => [m a] -> m [a]

Я понимаю, как эта функция работает для List из Maybe s. Например, применение последовательности к [Just 3, Just 9] дает Just [3, 9] .

Я заметил, что применение последовательности в List из List дает его декартово произведение. Может кто-нибудь, пожалуйста, помогите мне понять, как / почему это происходит?

29
задан missingfaktor 14 March 2011 в 14:05
поделиться