haskell - 如何在haskell中使用以下方法获得无限的权力列表

标签 haskell

我一直在尝试做一个无限的幂列表,就像我在下面所做的一样,以获得斐波那契数和阶乘的列表。

fibs = 0 : 1 : zipWith (+) fibs (tail fibs)

facs = 1 : zipWith (*) [1 ..] facs

谢谢

最佳答案

生成数字的幂就像使用“迭代”一样简单:

iterate (*2) 1

要查找特定的功率(而不是列出它们),使用 (^) 会更快。 .要查看大乘法的各个步骤,您可以使用 scanl :
scanl (*) 1 [2, 3, 5, 7]

最后生成所有正方形的列表,这是我推荐的方法:
fix (\more r s -> s : more (r + 1) (s + 2*r + 1)) 0 0

或者如果您对 fix 感到不舒服这里有两个替代版本:
unfoldr (\(r, s) -> Just (s, (r + 1, s + 2*r + 1))) (0, 0)

map snd . iterate (\(r, s) -> (r + 1, s + 2*r + 1)) $ (0, 0)

关于haskell - 如何在haskell中使用以下方法获得无限的权力列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13442176/

相关文章:

haskell - 排序与纯函数绑定(bind)

haskell - cabal 安装依赖错误 : "base-* was excluded because of the top level dependency base -any"

string - 在 Haskell 中替换字符串

Haskell 和 java.awt.Robot

haskell - 使用 hs_init 分析共享 cabal 库时出现 GHC RTS 运行时错误

haskell - 如何使用Data.Functor.Invariant?

list - 使用 Haskell 的交替系列

haskell - 如何有效地将归纳类型转换为互归纳类型(无需递归)?

haskell - 带有中缀函数的偏应用

haskell - protected 绝对/相对文件路径类型