重复函数在Haskell中递归

Lun*_*nar 3 haskell

我正在尝试创建一个输出char*m n时间的函数,例如预期的输出将["ccc","ccc"]用于输入2 3 c.这是我到目前为止:

rectangle :: Int -> Int -> Char -> [string]
rectangle n m c 
    | m > 0 = [concat ([[c]] ++ (rectangle n (m-1) c))] 
    | otherwise = []
Run Code Online (Sandbox Code Playgroud)

我能够执行第一部分char*m,所以它返回["ccc"].事情是:我也希望能够重复我的字符串n时间.

我尝试过使用复制但它似乎不起作用,但如果在控制台中执行它,它会起作用:replicate 2 (rectangle 2 3 c).

Tom*_*Tom 7

以这种方式尝试复制功能:

replicate :: Int -> a -> [a]

rectangle n m c = replicate n (replicate m c)
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记提及这是否是作业.

  • 函数`replicate`接受一个数字`n`和一个值,并创建该值的'n`元素列表.所以`复制3'a''产生'"aaa"`. (2认同)
  • @Lunar学习的好方法是尝试自己定义`replicate`.我想不出一个解决方案,不需要以某种方式使用`replicate`. (2认同)