怎么在haskell做这个?[x ^ 0,x ^ 1,x ^ 2,x ^ 3 ...]

Aar*_*rtz 2 haskell functional-programming

我想要一个像这样的列表

[x^0,x^1,x^2,x^3 ...] 
Run Code Online (Sandbox Code Playgroud)

是否有可能有这样的清单

例如

 ex : x = 2   [1,2,4,8,16,32 ..] 
Run Code Online (Sandbox Code Playgroud)

chi*_*chi 9

您可以多次使用iterateunfoldr加倍数字.这可能比x^n为每个计算更有效n.

下面,我使用x=2,但你可以使用任何x.

> take 10 $ iterate (*2) 1
[1,2,4,8,16,32,64,128,256,512]
> take 10 $ unfoldr (\x -> Just (x,2*x)) 1
[1,2,4,8,16,32,64,128,256,512]
Run Code Online (Sandbox Code Playgroud)

还要注意有界整数类型Int会以这种方式快速溢出.