将 IO 输出收集到列表中

2024-02-28

我怎样才能发出多个呼叫SDL.pollEvent :: IO Event http://hackage.haskell.org/packages/archive/SDL/0.6.2/doc/html/Graphics-UI-SDL-Events.html#v%3ApollEvent直到输出为SDL.NoEvent并将所有结果收集到一个列表中?

用命令式的术语来说是这样的:

events = []
event = SDL.pollEvent
while ( event != SDL.NoEvent ) {
        events.add( event )
        event = SDL.pollEvent
}

詹姆斯库克非常友善地延长了单子循环 http://hackage.haskell.org/packages/archive/monad-loops/0.3.1.0/doc/html/Control-Monad-Loops.html具有此功能:

unfoldWhileM  :: Monad  m => (a -> Bool) -> m a -> m [a]

与 SDL 一起使用:

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

将 IO 输出收集到列表中 的相关文章

  • Haskell:GHC 无法推断类型。由类型签名错误绑定的刚性类型变量

    我看过几篇主题相似的帖子 但它们并不能真正帮助我解决我的问题 所以我才敢重复 现在我有一个带有签名的函数 run Expr query gt RethinkDBHandle gt query gt IO JSON 这是一个数据库查询运行函数
  • Haskell cabal:我刚刚安装了软件包,但现在找不到软件包

    在这里 http haskell org haskellwiki Cabal Install I just installed packages 2C but now the packages are not found这是我可以找到我正在
  • Haskell 中实例声明的参数顺序切换

    我想进行实例声明 但自由类型变量不是最后一个变量 例如 我有一个类声明 class Poppable m where tryPop m a gt Maybe a m a 现在我想让 Q PSQ 优先级队列 成为 Poppable 的实例 具
  • 为什么我不能将 Int 类型与 a 类型匹配

    哈斯克尔新手在这里 我在这里尝试做的事情的一个过于简单的例子 test Int gt a test i i Couldn t match expected type a with actual type Int a is a rigid t
  • Haskell:从后面访问列表

    今天我开始学习Haskell 我对函数式语言有点陌生 而且我非常喜欢 Haskell 然而 我有一个关于它的设计的问题困扰着我 从我到目前为止的理解来看 访问列表后面的元素似乎比访问前面的元素要复杂得多 类似于xs x where xs a
  • 用纯函数式语言保持状态

    我正在尝试弄清楚如何执行以下操作 假设您正在开发直流电机的控制器 您希望让它以用户设置的特定速度旋转 def set point ref sp 90 while true let curr read speed controller set
  • 在 Fortran 中按名称获取文件单元,反之亦然

    Fortran 90 有没有办法通过名称获取文件单元和通过单元号获取文件名 我知道这会很昂贵 但是我有很多文件名 我希望在创建它们后能够在子例程中重新访问它们 像这样的命令 inquire unit 12 opened openedq fi
  • 如何将位写入文件?

    如何使用 c net 将位 而不是字节 写入文件 我很坚持它 Edit 我正在寻找一种不同的方法 将每 8 位写为一个字节 一次可以写入的最小数据量是一个字节 如果您需要写入单独的位值 例如 二进制格式需要 1 位标志 3 位整数和 4 位
  • 如何构造 Network.HTTP.Conduit.Request 对象?

    试图构建一个Request with 网络 HTTP 管道 http hackage haskell org packages archive http conduit 1 1 0 1 doc html Network HTTP Condu
  • 有 Haskell 日期库吗?

    Haskell 中是否有一个函数允许我输入日期的组成部分 如字符串表示形式或日月年组成部分 我可以从中获取信息 如星期几 一个月中的天等 我在网上查了一下 看起来有很多自定义库 但我希望 ghci 10 6 4 的标准前奏库中有一个没有很好
  • 不明白这个 haskell 代码中的内容

    我有一些 Haskell 代码 我正在尝试完成它 但我不明白其中发生了什么 type Bag a a gt Int emptyB Bag a emptyB e gt 0 countB Eq a gt Bag a gt a gt Int co
  • 系统地将函数应用于 haskell 记录的所有字段

    我有一条包含不同类型字段的记录 以及一个适用于所有这些类型的函数 举一个小 愚蠢 的例子 data Rec Rec flnum Float intnum Int deriving Show 比如说 我想定义一个为每个字段添加两条记录的函数
  • 计算出类型索引的自由 monad 的细节

    我一直在使用免费的 monad 来构建 DSL 作为语言的一部分 有一个input命令 目标是在类型级别反映输入原语期望的类型 以提高安全性 例如 我希望能够编写以下程序 concat Action String String concat
  • 如何处理文件名中的空格

    我正在尝试迭代本地目录中的文件 foreach string name in Directory GetFileSystemEntries path FileAttrtibutes att File GetAttributes name 文
  • 加快 GHC 中的编译速度

    除了 O0 这可以加快编译时间吗 如果生成的程序未被优化也没关系 实际上我只想经常快速地对大型 haskell 包进行类型检查 Flag fno code极大地加快了编译速度 但无法使用它 因为该程序使用了 TemplateHaskell
  • 输入流 I/O 上的 EBADF(错误文件号)

    我有这个错误 java io IOException 读取失败 EBADF 错误文件号 在这行代码上 while input fis read buffer 1 您认为什么会导致该行出现 EBADF bad file number 错误 关
  • 为什么 Vector[Option[Int]] 上的 flatMap 其映射器函数结果不是 Vector[Option[Int]] 有效?

    例如 Vector Some 1 Some 2 Some 3 None flatMap n gt n 产生一个Vector 1 2 3 而不是给出错误 正如我在其他语言中看到的那样 flatMap当你有一个产生嵌套的映射器函数时使用 所以我
  • Python 的“with”是一元吗?

    像我之前的许多鲁莽的先驱者一样 我正在努力穿越理解单子这片无路可走的荒原 我仍然在蹒跚学步 但我不禁注意到 Python 的某种类似 monad 的品质with陈述 考虑这个片段 with open input filename r as
  • Haskell 程序查找列表中元素的位置

    我需要编写一个函数来查找列表中一个特定元素的位置 我是这样写的 findPos list elt list 1 head list elt 0 otherwise 1 findPos tail list elt 但是如果列表中元素重复怎么办
  • Haskell 中的纯函数是否有可能改变变量的本地副本?

    Haskell 中的纯函数是否有可能改变变量的本地副本 就像 clojure 中提到的那样函数式编程是一个骗局 http swannodette github io 2013 06 10 porting notchs minecraft d

随机推荐

  • 使用 watchOS2 中的 WatchConnectivity 在 iOS 和 WatchOS 之间发送消息

    我看了WWDC2015 看到现在可以在手表上开发原生应用了 这开启了很多功能 我想知道如何在我的 iOS 应用程序和 AppleWatch 应用程序之间发送数据 我看到有一个新的框架叫做WatchConnectivity 我如何使用它以及来
  • pandas 可以在视图或切片上使用替换方法来修改原始数据帧吗?

    我想替换数据框中的某些单元格值 如果它们在一个组内 但如果它们在其他组内则不替换 例如 我创建以下数据框 import pandas as pd df pd DataFrame a 2 3 b 2 3 a 3 3 columns 1st 2
  • Loopback4 中的事务支持吗?

    Loopback4如何支持事务 有没有类似的装饰器 比如 Transaction 我查看了这里的文档https loopback io doc en lb4 Repositories html https loopback io doc e
  • 等宽 Unicode 字体

    谁能告诉我涵盖大部分 unicode 字符的等宽字体吗 如果没有 那么包含大部分欧洲语言字符集的等宽字体 我也在寻找单一空间 丰富的 Unicode 字体 到目前为止 我使用 DejaVu Sans Mono 但我想知道是否有更好的 对我来
  • 当 applicationDidBecomeActive 被调用时如何告诉活动视图控制器?

    我觉得我在这里缺少一个技巧 我只想在调用 applicationDidBecomeActive 时在当前活动视图控制器上调用 viewDidLoad 或 viewDidAppear 这样当应用程序从后台再次启动时 我可以重置一些动画或其他内
  • 如何防止 Vuex 干扰我的类实例?

    我试图在 Vuex 中存储一个类的实例 EditorState https prosemirror net docs ref state EditorState来自散文镜 这个类从外部来看或多或少是不可变的 这意味着每当我想对其进行更改时
  • Bash 中使用“echo”变量覆盖文本问题

    我使用 OS X 10 6 5 Bash 当我运行这个时 echo IP echo of echo IPLINES 我得到这个输出 219 80 4 150 3128 of 1108 当我运行这个时 echo IP of IPLINES 我
  • App Engine 数据存储区 - 开发服务器限制

    我正在尝试测试 Google App Engine 数据存储数据库的效率 我想知道它查询大型数据集的速度有多快 总的来说 我的意思是大约 5 1000 万个同类实体 devserver 只允许我输入 1000 个同类实体 有办法提高这个限制
  • 如何使用 TestNg 和 eclipse 在其他浏览器完成后在多个浏览器中运行 Selenium webdriver 测试用例

    我想在所有多个浏览器中运行 selenium webdriver 测试用例但不是并行的是否可以在不使用xml和selenium网格的情况下在所有多个浏览器中运行测试用例 我们可以通过使用注释和java类来做到这一点 我希望我的测试用例应该首
  • 是否存在作为典型内联块存在的 HTML 元素?

    The div是典型的块级元素 并且span是内联对应项 它们是该显示类型的最简单的形式 没有其他属性 在很多情况下 我会给它们中的任何一个风格 display inline block 这使得它们的行为方式非常方便 为了div这意味着盒子
  • JavaScript 基本替换同一字符串中的两个字符

    I have var foo bar foo replace replace 所以 我得到bar没有括号 有更好的方法吗 你可以使用 foo foo replace g 这涉及一个简单的正则表达式 它匹配左括号或右括号的所有实例 请注意 您
  • Ubuntu 重启后 Google Chrome 丢失 cookies [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 几天来我遇到了奇怪的问题 当我重新启动系统甚至重新登录时 我会在我登录或单击 记住我 的网站上注销 问题仅出现在 Google Chrom
  • 在 C# 中使用 MySQLConnection 无法正确关闭

    我尝试编写一个类来使 MySql 连接更容易 我的问题是 在我打开连接并关闭它之后 它在数据库中仍然打开并被中止 当然 我使用的是 using 语句 但连接仍然打开 并在退出程序后中止 我的代码如下所示 using DatabaseMana
  • 对大于屏幕尺寸的侧边栏进行位置粘性

    我有一个侧边栏 其高度大于屏幕尺寸 并且在使用时position sticky 除非滚动到页面末尾 否则我将无法看到侧边栏的底部 例如 如何确保滚动时页面的 50 已经显示侧边栏的下部 这里的代码示例 https jsfiddle net
  • ActionBar 操作项未显示[重复]

    这个问题在这里已经有答案了 我有一个非常简单的代码 但即使经过长时间的谷歌搜索也无法解决问题 我想在我的 ActionBar 中添加一些 Action Items 但是每当我运行应用程序时 我看到的只是一个带有应用程序徽标和标题的 Acti
  • 如何使用 OAuth 2 - OAuth 2 C# 示例

    我必须弄清楚如何使用 OAuth 2 才能使用 Deviantart api 我得到了 client id 和 client secret 部分 这是他们提供的信息 端点 使用 OAuth 2 0 向我们进行身份验证时所需的唯一信息是cli
  • 关于 try-catch 块的思考

    您对如下代码有何看法 public void doSomething try actual code goes here catch Exception ex throw 我看到的问题是实际的错误没有得到处理 只是将异常抛出到不同的地方 我
  • 避免 C++ 中的非正规值

    在寻找了很长时间的性能错误之后 我读到了有关非正规浮点值的内容 显然 非规范化浮点值可能是一个主要的性能问题 如本问题所示 为什么将 0 1f 更改为 0 会使性能降低 10 倍 https stackoverflow com questi
  • 如何在 React 组件之外访问历史对象

    首先 我对这个领域非常熟悉带路由器 https reacttraining com react router web api withRouter然而 在这种情况下 HoC 没有帮助 因为我不想访问history组件中的对象 我正在尝试实现
  • 将 IO 输出收集到列表中

    我怎样才能发出多个呼叫SDL pollEvent IO Event http hackage haskell org packages archive SDL 0 6 2 doc html Graphics UI SDL Events ht