使用符号分配列表/元组

时间:2013-10-19 20:33:05

标签: 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]

2 个答案:

答案 0 :(得分:9)

使用sequencereplicate

f = do
    xs <- sequence $ replicate n g
    return xs

答案 1 :(得分:7)

@ Zeta解决方案的简单版本是:

import Control.Monad

f = replicateM n g