如何从 Monad 列表到列表的 Monad
How to get from a list of a Monad to a Monad of a list
我正在寻找一种将 [m [a]] 类型转换为 m [[a]] 的方法,其中 m 是某种类型的 Monad。
您正在寻找 Control.Monad.sequence
λ> import Control.Monad (sequence)
λ> sequence [Just [1,2,3], Just [4,5,6], Just [7,8,9]]
Just [[1,2,3],[4,5,6],[7,8,9]]
它的类型是(Traversable t, Monad m) => t (m a) -> m (t a)
。
将 t
特化为 []
并将 a
特化为 [a]
,我们得到
sequence :: [m [a]] -> m [[a]]
我正在寻找一种将 [m [a]] 类型转换为 m [[a]] 的方法,其中 m 是某种类型的 Monad。
您正在寻找 Control.Monad.sequence
λ> import Control.Monad (sequence)
λ> sequence [Just [1,2,3], Just [4,5,6], Just [7,8,9]]
Just [[1,2,3],[4,5,6],[7,8,9]]
它的类型是(Traversable t, Monad m) => t (m a) -> m (t a)
。
将 t
特化为 []
并将 a
特化为 [a]
,我们得到
sequence :: [m [a]] -> m [[a]]