为什么 `changes` 返回 `Event t (Future a)`

2023-12-19

The changes https://hackage.haskell.org/package/reactive-banana-0.8.0.2/docs/Reactive-Banana-Frameworks.html#v:changes函数有类型Frameworks t => Behavior t a -> Moment t (Event t (Future a)). Future是抽象的,只有一个函数消耗它(reactimate').

但是,我可以轻松编写以下函数:

changes' :: Frameworks t => Behavior t a -> Moment t (Event t a)
changes' b = fmap (fmap const b <@>) (changes b)

得到一个正常的(非Future) event.

是不是那个函数有问题?如果不是,为什么原来的changes函数有更严格的类型吗?


功能changes返回与函数不同的值changes'你所描述的。关键点如下:

考虑由以下定义的行为stepper (or accumB),有时会发生变化t0。此时该行为有什么价值?答案是,行为在所有时间都呈现新值。严格更大比变化的时间,t > t0,并且它在当时仍然具有其旧值t0。换句话说,changes'函数返回一个事件,其值是行为更改时的旧值。相比之下,changes函数返回新的(“未来”)值。由于各种原因,与递归 https://stackoverflow.com/a/7852344/403805,新值被包装在Future类型,以便在reactimate' phase.

编辑:托比亚斯画了一张图来说明:

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

为什么 `changes` 返回 `Event t (Future a)` 的相关文章

随机推荐

  • 如何在 Julia/JuMP 中以总和表示法“for all”

    我正在尝试使用 JuMP 对 Julia 中的线性优化问题添加约束 我正在使用sum 但是 我在某些限制方面遇到了麻烦 有谁知道JuMP中的 for all 倒过来的A 怎么写 这是我到目前为止的代码 using JuMP m Model
  • 如何将 EditText 和 Button 放在一起?

    我想尝试让 EditText 和 Button 彼此相邻 我目前的位置是按钮位于右侧 编辑文本左对齐 但按钮显示它位于 EditText 的顶部 我希望按钮从 EditText 结束的地方开始 这就是我现在所拥有的
  • 根据上游任务的输出在气流中生成动态任务

    如何根据上游任务返回的列表动态生成任务 我已经尝试过以下方法 使用外部文件从列表中写入和读取 此选项有效 但我正在寻找更优雅的解决方案 Xcom 拉进了一家 subdag 工厂 这是行不通的 我能够将列表从上游任务传递到子dag 但 xco
  • 使用dompdf访问远程图像的安全问题

    我正在使用 dompdf 生成 PDF 文件 该文件从 highcharts js 导出库获取一些图像 动态图表 现在我必须将 DOMPDF ENABLE REMOTE 的默认设置从 false 更改为 true 以使 dompdf 能够包
  • 多个方法参数上的 @Cacheable 键

    来自弹簧文档 http static springsource org spring docs 3 1 0 M1 spring framework reference html cache html Cacheable value book
  • 如何在没有响应标头的情况下显式终止来自服务器的 http 连接

    我正在为我的一个客户端应用程序开发一个服务器模拟器 我正在使用 GlassFish 服务器 我必须在我的服务器应用程序中模拟 http 连接终止条件 有没有一种方法可以显式终止来自服务器端的连接 以便客户端不会收到任何响应标头 目前我已经尝
  • sudo pip 安装 django

    这是我第一次尝试安装 Django 当我运行它时 它成功安装了 Django 1 7 3 但我收到了下面的这些警告 我无法在网上找到任何有关它的信息 所以我希望有人能够澄清它们的含义 如果我需要修复它们 以及我该如何去做 谢谢 下面是我的终
  • 如何在 SwiftUI 中添加键盘工具栏,即使键盘不可见,该工具栏仍然保留

    我有一个聊天应用程序 想要在键盘上添加一个工具栏 类似于 SwiftUI 之前的 inputAccessoryView 我知道 iOS15 现在可以选择使用以下内容添加工具栏 来自 hackingwithswift toolbar Tool
  • bash:截断文件名,保持它们唯一

    我使用类似于此的 for 循环将文件夹中的所有文件名截断为 16 个字符 for i in do Shortname i 0 16 Let s assume I don t need the extension mv i Shortname
  • Playwright C# - 处理 Toast 消息

    我试图使用剧作家检查祝酒消息的内容 但找不到合适的方法来实现这一目标 剧作家文档列出了一种处理警报消息的合适方法 我可以使用该方法在解除警报之前检索警报中的文本内容 例如 Page Dialog dialog gt alertMessage
  • 图发生率列表实现

    我正在考虑图形数据结构实现 并正在查看 发生率列表 表示 这里有一个简单的描述 发生率列表 http en wikipedia org wiki Incidence list 因此图中的每个顶点都存储它所关联的边的列表 鉴于我的图是有向图
  • 使用 std::cout 正确地用零填充负整数

    我发现这个问题已经被问过 但每个人给出的答案都是 std cout lt lt std setw 5 lt lt std setfill 0 lt lt value lt lt std endl 这对于正数来说很好 但是对于 5 它会打印
  • 我可以在 Kubernetes Pod 中运行 Google Monitoring Agent 吗?

    看来谷歌监控代理 供电堆栈驱动程序 https cloud google com monitoring agent install agent应安装在每个Node 即每个计算实例 即每台机器 库伯内斯簇 然而新的plugins like N
  • 如何在 OAuth 同意屏幕中启用内部选项?

    当我尝试在 OAuth 同意屏幕中选择 内部 选项时 它告诉我 因为您不是G Suite用户 所以您只能制作您的应用 可供外部 一般受众 用户使用 我怎样才能启用这个选项 制作内部应用程序的唯一方法是从 gsuite 域帐户创建项目 通过您
  • 创建在 Aurelia 中使用依赖注入的类的新实例

    我想创建一个能够创建使用依赖注入的类 MyClass 实现抽象类 的新实例的工厂 我希望工厂看起来像这样 Factory export class Factory public static makeMyClass return new M
  • 导入错误:没有名为flask_wtf的模块

    我收到错误 ImportError No module named flask wtf 我尝试了所有可能的解决方案 我使用 安装了flask wrf flask bin pip install flask wtf Requirement a
  • Plotly:从悬停标签中隐藏“null”

    我有一个名为my customdata其中有一些nan价值观 当我绘制旭日图并将列表传递给customdata 它会根据需要显示值 但对于nan值 它反而显示0 如果我将 si 前缀设置与自定义数据一起传递 或null如果我没有传递自定义
  • 如何杀死一个javascript函数?

    示例代码 var isExecutionOver false myFunction function does some asynchronous stuff and sets isExecutionOver to true when th
  • 如何在Python 3中设置sys.stdout编码?

    在 Python 2 中设置默认输出编码是一个众所周知的习惯用法 sys stdout codecs getwriter utf 8 sys stdout 这包裹了sys stdout以 UTF 8 编码输出的编解码器编写器中的对象 然而
  • 为什么 `changes` 返回 `Event t (Future a)`

    The changes https hackage haskell org package reactive banana 0 8 0 2 docs Reactive Banana Frameworks html v changes函数有类