我很好奇如何在Haskell中使用复制来创建重复一组数字的整数列表。这是一个家庭作业和规则有点混淆我开始,但基本上我想要创建一个1..9 9次的列表,所以这个列表中的81个整数每次只有1..9。我在谷歌搜索上尝试了一些东西,让我最接近的是
zipWith' (replicate 9 1) [1..]
这似乎与我的目标很接近,但它已经失控,我不知道如何将其重置为1我想是
我的第一个想法是
中的超级简单replicate 9 [1..9]
这似乎非常接近我所需要的,但它是一个列表列表,我不知道如何只列出所有这些数字。非常感谢任何帮助。
答案 0 :(得分:5)
由于列表上有半群,您可以使用stimes
重复一定次数。
stimes
:: (Semigroup a, Integral b) => b -> a -> a
重复一次n次。
stimes 9 [1..9]
答案 1 :(得分:4)
要展平列表列表,您可以使用concat
:
concat (replicate 9 [1..9])
另一种选择是使用[1..9, 1..9, 1..9, …]
创建cycle
的无限列表,并获取前81个元素:
take 81 (cycle [1..9])
答案 2 :(得分:1)
因此,您有一个列表[[Int]]
,并希望从中创建一个简单的列表[Int]
。 Ask Hoogle
!第一个结果是
concat :: [[a]] -> [a]