在Haskell中生成无限列表

时间:2015-06-10 11:30:22

标签: haskell list-comprehension

所以,为了准备即将到来的考试,我已经考虑了一些旧考试并且遇到了这个问题:

编写Haskell代码以定义std::vector<cv::Mat> myImages=GetMyImages(); 以下形式的无限列表: ints :: [Int]

过去半个小时我一直在插电,但似乎找不到任何可以解决的事情,或者我会想做什么。我觉得我真正想要的是对表格的列表理解

[0, 1, -1, 2, -2, 3, -3, 4, -4..]

但这不起作用,我不确定如何让它工作

1 个答案:

答案 0 :(得分:6)

问题是x (-x)不属于Int类型(感谢@leftaroundabout在此处删除了对无效语法的无意义)。您想为每个x生成两个值。所以我想最简单的方法是创建大量的列表对[1, -1][2, -2],然后将它们连接起来。显然前置0

ints :: [Int]
ints = 0 : concat [[x, (-x)] | x <- [1..]]

此外,您可能希望使用Integer代替Int,因为Int会在某个时刻溢出,但Integer则不会。{/ p>