列表理解:制作列表列表

dav*_*ave 9 haskell list-comprehension

嗨我试图在haskell中创建一个函数,使用数字a使用列表,即4它将创建的数字的一部分[[1,1,1,1],[1,1,2],[1,3],[2,2],[4]].我正在考虑使用列表理解,它会创建列表x,然后使用[1 ... n]中的数字创建更多列表(n是我想要的分区号),其中创建的列表总和相等到了

我到目前为止创建的代码是 -

partions (n:xs) = [[x|x<-[1...n], sum[x]==n]]|xs<-[1..]]
Run Code Online (Sandbox Code Playgroud)

但不经意的是它没有用,有什么建议吗?

谢谢.

Lag*_*aer 4

我建议尝试递归:要获得 n 的分区,迭代数字 i = 1 到 n,并递归生成 (ni) 的分区,基本情况是 1 的唯一分区是 1 本身,并且 的分区0 是空列表。

  • 将“分区 0”设置为“[[]]”而不是“[]”可能有助于使递归更简单。 (2认同)