Syz*_*orr 0 haskell list-comprehension
所以,为了准备即将到来的考试,我一直在考试一些旧考试,并遇到了这个问题:
编写Haskell代码以定义ints :: [Int]以下形式的无限列表:
[0, 1, -1, 2, -2, 3, -3, 4, -4..]
过去半个小时我一直在插电,但似乎无法找到任何解决方案,或者那样做我想做的事情.我觉得我真正想要的是对表单的列表理解
ints :: [Int]
ints = [0] ++ [x (-x) | x <- [1..]]
Run Code Online (Sandbox Code Playgroud)
但这不起作用,我不确定如何让它工作
问题是它x (-x)不是类型的Int(感谢@leftaroundabout在这里删除了关于无效语法的无意义).您想为每个生成两个值x.所以我想最简单的方法是创建大量的名单对[1, -1],[2, -2]......然后将它们串联在一起.显然前置一个0.
ints :: [Int]
ints = 0 : concat [[x, (-x)] | x <- [1..]]
Run Code Online (Sandbox Code Playgroud)
此外,你可能想使用Integer,而不是Int作为Int溢出在某些时候,但Integer不会.