首页 > 解决方案 > 如何在haskell中做到这一点?[x^0,x^1,x^2,x^3 ...]

问题描述

我想要一份像这样的清单

[x^0,x^1,x^2,x^3 ...] 

有没有可能有这样的清单

例如

 ex : x = 2   [1,2,4,8,16,32 ..] 

标签: haskellfunctional-programming

解决方案


您可以多次使用iterate或将数字加倍。unfoldr这可能比计算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]

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


推荐阅读