你将如何在 Haskell 中(重新)实现迭代?

2024-05-26

iterate :: (a -> a) -> a -> [a]

(你可能知道)iterate是一个接受函数和起始值的函数。然后它将函数应用于起始值,然后将相同的函数应用于最后的结果,依此类推。

Prelude> take 5 $ iterate (^2) 2
[2,4,16,256,65536]
Prelude> 

结果是一个无限列表。 (这就是为什么我使用take)。 我的问题是你将如何实现你自己的iterate'Haskell 中的函数,仅使用基础知识((:) (++)lambda、模式匹配、防护等)?

(哈斯克尔初学者在这里)


Well, iterate构造一个无限的值列表a增加了f。所以我首先编写一个在前面添加一些值的函数a到通过递归调用 iterate with 构造的列表f a:

iterate :: (a -> a) -> a -> [a]
iterate f a = a : iterate f (f a)

由于惰性求值,只有计算函数值所需的构造列表部分才会被求值。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

你将如何在 Haskell 中(重新)实现迭代? 的相关文章

  • 如何循环遍历关联数组并获取密钥?

    我的关联数组 arr array 1 gt Value1 2 gt Value2 10 gt Value10 使用以下代码 v充满了 arr的价值观 foreach arr as v echo v Value1 Value2 Value10
  • 不同 hs 文件中的函数分离时堆栈空间溢出

    我有一个巨大的 haskell 文件 它编译和运行没有任何问题 我想将一些函数和类型定义放在通用 hs 文件中的单独模块中 然后将其导入我的主模块中 虽然主程序编译时没有任何错误 它还编译导入的模块 但当我尝试运行它时 出现堆栈空间溢出 I
  • 可以通过Data.Function.fix来表达变形吗?

    我有这个可爱的fixana这里的函数执行速度比她的姐妹快 5 倍左右ana 我有一个criterion报告支持我这一点 ana alg Fix fmap ana alg alg fixana alg fix f gt Fix fmap f
  • Haskell printf 转字符串

    Haskell 中有等效的 sprintf 吗 我需要将双精度值转换并格式化为字符串 有没有其他方法而不使用printf什么样的功能 主要问题是要避免 Prelude gt putStrLn myDoubleVal 1 7944444444
  • 为什么haskell中的递归列表这么慢?

    我对 Haskell 很陌生 我在 Haskell 中定义了一个函数 febs Integral a gt a gt a febs n n lt 0 0 n 1 1 n 2 1 otherwise febs n 1 febs n 2 但是
  • 是否有一个基于对象身份的、线程安全的记忆库?

    我知道记忆化似乎是堆栈溢出的 haskell 标签上的一个长期话题 但我think以前没有人问过这个问题 我知道 Haskell 有几个不同的 现成 记忆库 memo combinators 和 memotrie 包 利用涉及惰性无限数据结
  • 如何将 2 数组放入配置(.ini)文件中? [复制]

    这个问题在这里已经有答案了 我有这个简单的 VBScript 基本代码 Dim cars cars Array Volvo Saab BMW Dim fruits fruits Array Apple Orange Banana Dim i
  • 如何找到仅是 2、3 和 5 的幂的倍数的所有数字的列表? [复制]

    这个问题在这里已经有答案了 I am trying to generate a list of all multiples which can be represented by the form where a b and c are w
  • WordPress Loop:如何将每 3 个帖子包装到一个 div 中?

    我正在尝试这个 div div 但这不起作用 谢谢你 感谢各位的支持 我尝试了两种解决方案 但都不起作用 我最终做到了这
  • 将 Either 列表转换为其中包含列表的 Either 列表

    我是 Haskell 的初学者 我正在编写一些使用 Haskell 的代码Either https hackage haskell org package base 4 9 0 0 docs Data Either html用于错误处理 E
  • Haskell 中的相互递归求值器

    Update 我已经添加一个答案 https stackoverflow com questions 3524485 mutually recursive evaluator in haskell 4504200 4504200这描述了我的
  • C:从 char 数组打印会产生错误字符

    K N King s 的解决方案C 编程 现代方法 第二版 第 8 章 编程项目 14 产生不同的输出 包括正确的和错误的 示例如下所示 Reversal of sentence you can t swallow a cage can y
  • 在这个使用泛型的初学者 java 示例程序中,“:”在做什么?

    好吧 我需要帮助理解一些事情 我理解 是如何一起使用的 但是阅读一些 Java 入门资料后 我发现这种情况在一些地方出现 最近的是这个 public static u void fillBoxes U u List u
  • 什么是阴谋地狱?

    在阅读有关 阴谋地狱 的内容时 我有点困惑 因为这个词的含义太多了 我猜最初 Cabal Hell 指的是钻石依赖问题 该问题是通过限制构建计划在每个构建计划中只有任何包的单个版本来解决的 一个包的两个不同版本不能存在于单个构建计划中 正如
  • 管道中缺少 ResourceT 实例

    我在尝试使用时遇到奇怪的错误ResourceT http hackage haskell org package conduit 1 0 9 1 docs Data Conduit html t 3aResourceT来自管道 1 0 9
  • 如何处理在组合下发生变化的类型?

    我最近读了一篇非常有趣的论文单调性类型 https infoscience epfl ch record 231867 files monotonicity types pdf其中描述了一种新的 HM 语言 该语言可以跟踪操作之间的单调性
  • 通过数据框与函数进行交互

    如果我有这样的日期框架 氮 EG 00 04 NEG 04 08 NEG 08 12 NEG 12 16 NEG 16 20 NEG 20 24 datum von 2017 10 12 21 69 15 36 0 87 1 42 0 76
  • 如何理解play2中的“Iteratee”?

    有一个包play api libs iteratee在play2中 有一个大物体Iteratee其中有超过1000行 为什么play2需要这么大的对象以及如何理解它 我刚刚写了一篇文章 试图向那些尝试发现 Play2 提供的 Iterate
  • flex 3 迭代对象值

    我有一个代表数据库表的对象 我想迭代这个对象并打印每个值 我可以用什么来做到这一点 我想在我的mxml而不是actionscript中执行此操作 对于每个对象属性我想创建一个输入字段 查找有关 Flex 3 循环的文档 如果你这样做 你会发
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa

随机推荐

  • egit:设置gitignore忽略所有eclipse项目文件

    我在 github 上有一个项目 我想从中删除所有与 eclipse 相关的文件 并允许克隆它的人使用他们想要的任何 ide 这是该项目 https github com vedi0boy Archipelo https github co
  • Hadoop 上的 Sqoop:NoSuchMethodError:com.google.common.base.Stopwatch.createStarted() [重复]

    这个问题在这里已经有答案了 我在 Google Cloud DataProc 上的 hadoop 上运行 sqoop 以通过 Cloud SQL 代理访问 postgresql 但遇到 Java 依赖项错误 INFO First Cloud
  • 如何在连接到远程系统的设备上部署和执行应用程序?

    我需要部署测试应用程序并在连接到同一网络中另一台计算机的设备上发出命令 我通读了http developer android com tools help adb html directingcommands http developer
  • 纯组件在没有变化时渲染?

    我有一个像这样的纯组件 interface Props checkBoxTitleStyle any checkBoxBackgroundColor any onPressCheckBox id isChecked selectedArra
  • Angular2 - Keyup 需要澄清

    在我的应用程序中 我有条件地添加一个类 当用户输入某些内容时 我正在检查该值 并相应地添加类名称 效果很好 但它只更新一组 keyup 0 设置一些值keyup 这不像angular 1 here 所以有人解释一下为什么我们要设置 keyu
  • 如何在 pygame 中水平翻转图像?

    这是在 pygame 如何翻转图像 假设一个图像 猪向右看 时向左看 我按向左箭头键 然后保持这样 即使我不按任何键或者按向上和向下箭头键 那么 当我按向右箭头键时 如何再次将其切换回向右看 并使其保持这种状态 即使我不按任何键或按向上和向
  • 如何将excel文件(XLSX)导入mongoDB [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一组数据作为输入以 XLSX 格式提供给 MongoDB 我该如何将 Excel 文件作为输入导入
  • 如何创建具有动态数量的网格列的 TailwindCSS 网格?

    我正在使用 Vue3 和 TailwindCSS 并希望创建一个具有动态的网格grid cols n 班级 我知道 TailwindCSS 默认情况下最多支持 12 列 但我无法自定义主题 因为列的数量完全是动态的 给出以下纯 HTML J
  • NSExceptionDomains xcode 8 不工作

    我正在使用 UIWebView 来显示电子邮件订阅注册页面 它不是 https 页面 所以我显然需要破例 我不想将其设置为 NSAllowsArbitraryLoads 因为它只是整个应用程序中的一页 应用程序可能会被拒绝 所以我在 inf
  • 如何读取COM端口? navigator.serial.getPorts 返回空列表

    我连接了少量 USB 串行接口 一个 HF 收发器 基于 Arduino 的 CW 键控器 和两个蓝牙端口 我从未使用过它们 并且不确定它们来自哪里 可能是某些应用程序 在我的 SPA 中 我需要阅读端口列表 以便能够选择连接哪个端口作为哪
  • 是否有可能改变整个恐慌消息?

    NUnit 是一个 C 单元测试框架 允许您编写如下代码 Assert That someInt Is EqualTo 42 Assert That someList Has Member someMember 我喜欢这种代码 因为它看起来
  • 如何在不同位置显示验证错误消息?

    我在用knockout js knockout validation插件 我正在添加示例小提琴 http jsfiddle net hsnCW 1 http jsfiddle net hsnCW 1 在此示例中 对数组进行了自定义验证以检查
  • 纹理映射 C++ OpenGL

    我已经阅读了相关内容 包括 Nehe 和此处的解决方案 但我找不到具体的答案 我正在尝试加载一张名为stars jpg 的照片 我想通过使用 uv 坐标映射它来使其成为场景的背景 方法是 glBegin GL QUADS glTexCoor
  • .NET 4.0 代码可以与 .NET 2.0 代码互操作吗?

    NET 4 0 程序集调用 NET 2 0 程序集中的代码是否存在兼容性障碍 反之亦然 更具体地说 我正在研究在使用基于 NET 2 0 的第三方应用程序时升级到 Visual Studio 2010 该应用程序可通过引用我的自定义代码的挂
  • React hooks 需要返回值吗?

    我最近开始在我的 React 应用程序中构建自定义挂钩 并一直在关注 React 网站上的文档 然而 我正在构建的钩子不需要返回值 因为它们在初始化时为 Redux 设置数据 Example custom hook export const
  • 如何在生成的 HTML 页面中隐藏 JavaScript 注释? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有办法隐藏生成的页面源中的 JS
  • 如何使用 purrr::pmap 在nested.data.frame中绘制多个ggplot

    我对 purrr pmap 在nested data frame中制作多个ggplot图有一些疑问 我可以使用 purrr map2 毫无问题地运行下面的代码 并且可以在nested data frame中制作多重图 2个图 作为示例 我在
  • 如何使用 ffmpeg 设置默认流

    我有一些 m4v 文件 我想用 ffmpeg 添加字幕 我知道我需要映射流以将它们放入输出文件中 但如何确保此字幕流将是默认流 字幕是 srt 人们似乎说它们与 mp4 容器不兼容 我需要先将字幕转换为什么 另外 各种流的顺序重要吗 视频流
  • MigraDoc 项目符号列表(漏洞)

    在我的解决方案中 我在 PDF 文件中使用项目符号列表 它看起来像这样 Solcellepaneler kr ver hverken autoriseret service eller tidskr vende vedligehold So
  • 你将如何在 Haskell 中(重新)实现迭代?

    iterate a gt a gt a gt a 你可能知道 iterate是一个接受函数和起始值的函数 然后它将函数应用于起始值 然后将相同的函数应用于最后的结果 依此类推 Prelude gt take 5 iterate 2 2 2