我正在尝试学习 Haskell 和理解列表,但找不到解决方案:
mylist = [x*y | x <- [1..], y <- [1..]]
经过我的试验,结果是这样的
mylist = [1,2,3,4,5,...]
因为在列表推导中,x
取值1
,然后y
反复更改值。
但我的目标是完成不同的任务,以便获得以下结果:
mylist = [1,2,2,4,3,3,6.....]
我的意思是我想要混合组合而不是分开,因为我有一个严重的问题来获得合适的结果。
我将举一个更具体的例子。
我想要一个包含这种形式的所有数字的列表:
num = 2^x * 3^y
x
并且y
必须取所有值>= 0
。
我的方法如下:
powers = [2^x * 3^y | x <- [0..], y <- [0..]]
但这样我只取 3 的幂,因为x
一直是 0。
我试过这个
multiples = nub (merge (<=) powers2 powers3)
powers3 = [2^x * 3^y | x <- [0..], y <- [0..]]
powers2 = [2^x * 3^y | y <- [0..], x <- [0..]]
以便合并不同的值,但再次合并值 6,12 等。丢失 - 结果是这样的:
mylist = [1,2,3,4,8,9,16,27,32,64,81...]