Tom*_*lis 10
ghci> import Control.Lens
ghci> sequenceOf both (getLine, getLine)
Apples
Bananas
("Apples","Bananas")
Run Code Online (Sandbox Code Playgroud)
对于所有不同的元组类型,不会有单个函数,因为它不具有单个类型.
您可以定义一系列函数,例如:
ts0 = return
ts2 = uncurry $ liftM2 (,)
ts3 = uncurr3 $ liftM3 (,,)
{- ... -}
uncurr3 f (x, y, z) = f x y z
Run Code Online (Sandbox Code Playgroud)
当然,序列通常更适用于applicative而不是monad,这就是为什么它是Traversable类型类的一部分.我相信,有可能使同质元组[(a,a,a)而不是(a,b,a)]成为MonoTraversable的一个实例.
您还应该看到另一个答案,表明已经有一个包含此系列函数的库.