标签: haskell functional-programming
我有一个类似这样的函数f:
f = do x1 <- g x2 <- g x3 <- g ... xn <- g return [x1,x2,x3,..., xn] --or (x1,x2,x3,..., xn)
这需要很多行代码,我觉得这可以做得更漂亮。 我想知道是否有办法做这样的事情:
f = do [x,y,z] <- [g,g,g] return [x,y,z]
答案 0 :(得分:9)
使用sequence和replicate:
sequence
replicate
f = do xs <- sequence $ replicate n g return xs
答案 1 :(得分:7)
@ Zeta解决方案的简单版本是:
import Control.Monad f = replicateM n g