haskell - 如何在 haskell 中做到这一点? [x^0,x^1,x^2,x^3 ...]

标签 haskell functional-programming

我想要一个像这样的列表

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

是否可以有这样的列表

例如

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

最佳答案

您可以使用iterateunfoldr将数字加倍多次。这可能比为每个 n 计算 x^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)会以这种方式很快溢出。

关于haskell - 如何在 haskell 中做到这一点? [x^0,x^1,x^2,x^3 ...],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50200373/

相关文章:

javascript - 如何使用 let 声明作为表达式?

haskell - 如何使用 QuickCheck 测试高阶函数?

Haskell 素数测试

haskell - "inject"Haskell 计算中的进度记录/跟踪?

scala - 这个功能是否被认为是副作用,从而导致错误的 FP 设计?

C++ 编译时检查副作用

java - 对数组进行循环操作的函数式方法

haskell - 如何删除两个具有不同输出类型的相同 Haskell 函数中的重复代码?

parsing - 如果 attoparsec 回溯,为什么它需要 manyTill?

.net - 受歧视的联盟和 let 绑定(bind)