【发布时间】:2015-10-28 02:54:11
【问题描述】:
在我不断尝试改进 Haskell 的过程中,我正在尝试解决一个问题,我想创建一系列这种形式的列表推导:
m2 = [[x1,x2] | x1 <- [2..110], x2 <- [x1..111]]
m3 = [[x1,x2,x3] | x1 <- [2..22], x2 <- [x1..22], x3 <- [x2..24]]
m4 = [[x1,x2,x3,x4] | x1 <- [2..10], x2 <- [x1..10], x3 <- [x2..10], x4 <- [x3..12]]
...
其中x1 ,m后面的数字是子列表的长度,前n - 1个词的边界为相同的上界,而第 n 项以更大的数字为界。
我当然可以手写所有内容,但这并不是特别好的做法。我想知道是否有办法将这些列表生成到特定的最大 m 值。我的直接想法是 Template Haskell,但我对它的了解还不够,无法确定它是否可用。是否有其他解决方案让我无法理解?
在伪 Haskell 中,我正在寻找的方法类似于:
mOfN n bound term = [ [x1..xn] | x1 <- [2..bound], x2 <- [x1..bound], ..., xn <- [x(n-1)..term] ]
主要问题是我不知道如何动态创建 x1、x2 等。
【问题讨论】:
标签: list haskell list-comprehension