代码之家  ›  专栏  ›  技术社区  ›  BBB

使用do表示法指定列表/元组

  •  4
  • BBB  · 技术社区  · 11 年前

    我有一个函数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 回复  |  直到 11 年前
        1
  •  9
  •   Zeta    11 年前

    使用 sequence replicate :

    f = do
        xs <- sequence $ replicate n g
        return xs
    
        2
  •  7
  •   Gabriella Gonzalez    11 年前

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

    import Control.Monad
    
    f = replicateM n g