在 Haskell 中循环时

2023-12-27

如何在 Haskell 中编写以下伪代码?

x=0
for (i from 0 to 100):
    j=0
    while ( f(i,j) >0 ):
      x+= f(i,j)
      j+=1

(f一些不重要的功能。)

我想出了这样的事情:

a= [x| i<-[0..100], let s = takeWhile (\k-> (f i k > 0)) [0..],
        j<- s, let x = f i j ]

Then Sum a可以工作,但我需要计算f i j两次,这有点多余。

这可以用以下方法完成吗f只计算一次或一些运行速度更快的更好的代码?


这是一种仅计算的方法f每对一次:

inner i = sum $ takeWhile (> 0) $ map (f i) [0..]
x= sum $ map inner [0..100]

我不喜欢列表理解,尤其是对于更复杂的表达式,所以我发现你的解决方案很难阅读。主要区别在于,不是存储列表j是这样的f i j > 0,我存储了实际的函数值。由于懒惰,这不再起作用。

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

在 Haskell 中循环时 的相关文章

随机推荐

  • java.lang.IllegalArgumentException:名称

    它在 Eclipse 中工作正常 但是当我创建 jar 并运行它时会给我这个异常 这是我正在使用的非 Web Spring Boot 应用程序 我应该作为独立 jar 运行 java lang IllegalArgumentExceptio
  • 如何在结束循环之前查看生成器的打印输出?

    我正在尝试在处理大量数据的生成器内打印调试信息 但是 只有当生成器完成时我才能看到结果 我使用的是python 3 我的代码如下 def generator while 1 print end time sleep 1 yield 1 fo
  • 使用 Jenkins 进行发布管理有哪些选项

    我正在评估 Jenkins 和 Apache Continuum 等构建引擎 我们的大部分构建都使用 Maven Jenkins 有哪些用于发布管理的选项 我所说的发布管理是指从源代码控制中的分支创建发布 然后更新 Maven 中的版本标签
  • 使用 GWT CellTableBuilder 按需构建自定义行

    GWT 2 5 RC 中引入了 CellTableBuilder API 但尚未提供全面的文档 是否有使用 CellTableBuilder 实现按需自定义行构建的教程 示例 到目前为止我发现的唯一例子就是这个http showcase2
  • 在大文件中进行搜索的最佳方法是什么?

    我希望对大文件 gt 4GB 应用 KMP 或类似 搜索 我预计这会给我带来问题 我无法将其全部复制到内存中 因为那里没有足够的空间 我的问题是 进行此搜索的最佳方法是什么 我是否应该简单地创建一个 FILE 并直接在文件中进行搜索 是否应
  • 如何组合数据然后分离连接的数据?

    我想将一系列数据合并到一个单单元格 G5 中 然后我想将Value G5拆分为原始形式 太感谢了 https docs google com spreadsheets d 1sVrpPvtQPG0Zw2Ar UxPHXNN0atEdQNX
  • PHP 中有从数组中提取“列”的函数吗?

    我有一个数组的数组 具有以下结构 array array page gt page1 name gt pagename1 array page gt page2 name gt pagename2 array page gt page3 n
  • Cobertura 如何与 JUnit 配合使用?

    我不明白Cobertura如何与JUnit合作 据我了解 cobertura 修改编译的字节代码并在该字节代码中插入它自己的命令 好的 之后 我们运行 Junit 框架并对其进行测试 谁能解释一下 cobertura 在什么时候获取执行了哪
  • 是否有一个 Python 习惯用法可以通过短路来评估函数/表达式列表?

    我写了一个简单的脚本来解决 逻辑谜题 这是学校里的谜题类型 你会被赋予许多规则 然后必须能够找到诸如 有五个音乐家 名字分别为 A B C 之类的问题的解决方案 D E 在一场音乐会上演奏 每人一个接一个地演奏 如果 A 在 B 之前演奏
  • 如何从键而不是值推断类型参数?

    我有一个表示有向图结构的类 它是具有一个类型参数的通用类K extends string对于节点名称 图表是通过传递一个对象来构造的 例如 a b b 在这个最小的例子中代表两个节点a and b 有一条边a b class Digraph
  • 为什么 ScriptEngine 不再有 Execute 方法?

    目前我已经开始更认真地与罗斯林合作 我发现本文 http visualstudiomagazine com articles 2011 11 16 the roslyn scripting api aspx关于使用ScriptEngine在
  • 通过四维数据寻路

    问题是找到飞机穿过四维风 不同高度的风 并且随着飞行而变化的风 预测风模型 的最佳路线 我使用了传统的 A 搜索算法 并对其进行了修改 使其能够在 3 维和风向量中工作 它在很多情况下都有效 但速度非常慢 我正在处理大量数据节点 并且不适用
  • PATH_MAX和NAME_MAX之间是什么关系,如何获取?

    In limits h 并且在 POSIX 联机帮助页的各个地方都引用了PATH MAX and NAME MAX 这些相互之间有何关系 他们的官方文档在哪里 如何在 C Python 和 GNU shell 环境的运行时和 相关 编译时获
  • 如何将身份验证、角色和安全性融入 DDD 中?

    如何在 C 域驱动设计项目中实现角色和安全性 关于它是否应该由调用应用程序 ASP NET MVC 实现还是在域模型本身 模型实体和服务 中实现 我们存在一些激烈的争论 有些人认为它应该在网站本身中 因为那里已经存在身份验证 但这意味着每次
  • 将屏幕截图上传到 iTunes Connect 时出现奇怪的错误

    我正在尝试将新的屏幕截图上传到 iTunes Connect 上的游戏页面 但当我这样做时 我收到了一个与现实和 或常识无关的错误 基本上 我上传了一堆具有正确分辨率 尺寸等的 iPhone 屏幕截图 然后收到一条错误消息 说我没有这样做
  • 如何在 igraph R 中的图组件之间添加边

    我有一个图表包含4 components 现在 我想在其中添加一个优势all components基于size of the membership 例如 下图包含4 components 首先 我将连接all components with
  • AngularJS - 原始/肮脏和触摸/未触摸之间的区别

    AngularJS 开发人员指南 表单 https docs angularjs org guide forms列出了许多有关表单和字段的样式和指令 对于每一个 都有一个 CSS 类 ng valid ng invalid ng prist
  • 创建 DPI 感知应用程序

    我有一个 C 表单应用程序 当我更改显示器的 DPI 时 所有控件都会移动 我用了代码this AutoScaleMode AutoScaleMode Dpi 但这并没有回避问题 有人有想法吗 编辑 从 NET 4 7 开始 Windows
  • 为什么需要设置 DefaultForbidScheme

    在 WebAPI net 核心项目中 我创建了一个验证 api 密钥的中间件类 通过验证它 它会检索该密钥在调用方法中拥有的权限 用户或管理员 我通过一个开关来设置原理 就像这样 GenericIdentity identity new G
  • 在 Haskell 中循环时

    如何在 Haskell 中编写以下伪代码 x 0 for i from 0 to 100 j 0 while f i j gt 0 x f i j j 1 f一些不重要的功能 我想出了这样的事情 a x i lt 0 100 let s t