网络的完整示例?

2023-12-19

我读过网络快速开始 http://hackage.haskell.org/packages/archive/netwire/4.0.7/doc/html/Control-Wire.html,但我无法想象整个事情在“真实”应用程序中的样子。由于本教程仅涉及纯电线,因此我对游戏特别感兴趣(如果有的话),但我不介意其他游戏。反应性香蕉示例可能也可以。他们应该只是说明 FRP 的用途。


Netwire 用于一些实际应用程序,但我不知道在哪里可以找到它们。他们目前可能处于闭门状态。不过,Reddit 上已经发布了一些示例应用程序的博客,因此您可能需要查看一下/r/哈斯克尔 http://www.reddit.com/r/haskell/。只需在那里搜索“netwire”即可。不幸的是,reactive-banana 示例没有帮助,因为这两个库的概念,特别是事件处理的概念完全不同。

Netwire 应用程序的整体结构是这样的:首先定义一个无功值,我们称之为simulation。在最简单的情况下,它是一根纯线:

simulation :: WireP a [Particle]

在不详细说明如何编写该线路的情况下,现在让我解释一下它是什么。输出类型是[Particle],所以它是粒子的反应列表。这意味着,这个列表可能会随着时间的推移而改变。值得注意的是,输入类型是完全多态的,因此您知道该无功值不依赖于其他无功值。

现在您想要获取特定时间点的粒子列表的实际值。这就是会话和步进函数发挥作用的地方。大多数应用程序只需要会话步进函数之一,例如stepSessionP在这种情况下。您只需在循环中调用此函数即可获取此时电线的当前值。无需连续调用该函数。

您会注意到步进功能不会给您[Particle], but a Either LastException [Particle]。这是因为 Netwire 中的无功值可以inhibit。这就是事件的概念。从范畴法则你知道

w . id

与刚才相同w大致以同样的方式x + 0是相同的x。身份线是中性的(.)。然而,现在想象一下

w . myId

where myId其作用类似于身份线,只会产生它所依赖的任何无功值,但有时根本不会产生任何结果。有时它会忽略该值而只是抑制,在这种情况下,组合物本身会抑制。你可以解读myId作为事件线并将组合物读取为“w if myId":

w . keyDown Space

然后你就有了选择运算符(<|>),其作用类似于事件的“或”:

w1 . ev1 <|> w2 . ev2 <|> w3

If ev1抑制,其余的都尝试。理想情况下,主线永远不会抑制,所以你可以使用stepSessionP_相反,它是由潜在的抑制线组成的。您还可以使用自己的抑制幺半群来获得诸如退出信号之类的东西。

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

网络的完整示例? 的相关文章

  • 如何在haskell中获取变量名称

    我来到 haskell 时有一些 c 背景知识 想知道是否有类似的 define print a printf s d n a a int a 5 print a 应该打印 a 5 这是 augustss 提到的 TH 解决方案 LANGU
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • 为什么 ZipList 不是 List 的默认应用实例

    我目前正在学习 Haskell 中的应用程序 如果我没记错的话 列表有两个不同的应用实例 List and ZipList 第二个被定义为包装列表值的新类型 这ZipList应用实例对我来说似乎更直观 这可能是一个愚蠢的问题 但有具体原因吗
  • 在 Haskell 中合并两个列表

    无法弄清楚如何合并两个列表通过以下方式在哈斯克尔 INPUT 1 2 3 4 5 11 12 13 14 OUTPUT 1 11 2 12 3 13 4 14 5 我想提出一个更懒的合并版本 merge ys ys merge x xs y
  • 带有 RankNTypes 扩展的奇怪类型推断

    我正在尝试在 Haskell 中尝试 System F 类型 并通过以下方式实现了自然数的 Church 编码type 当加载这段代码时 OPTIONS GHC Wall LANGUAGE RankNTypes type CNat fora
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • 我是否需要采取明确的操作来促进与持久数据结构的共享?

    我来自命令式背景 正在尝试实现一个简单的不相交集 并集查找 数据结构 以获得在 Haskell 中创建和修改 持久 数据结构的一些练习 目标是有一个简单的实现 但我也关心效率 我的问题与此相关 首先 我创建了一个按等级并集的不相交集森林实现
  • 在另一个字符串中查找子字符串的索引 Haskell

    我要创建一个带有两个参数 字符串 的函数 该函数应查看第一个参数是否是第二个参数的子字符串 如果是这种情况 它将返回每个出现的元组 其中包含子字符串的起始索引和子字符串的结尾索引 例如 f String gt String gt Int I
  • Haskell 项目可以使用 cmake 吗?

    我正在计划一个用 Haskell 编写的项目 也许也有一些部分是用 C 编写的 对于构建系统 我决定不选择 Haskell 程序 cabal 的常见选择 主要是因为我想了解其他语言的构建程序是如何工作的 我听说过 CMake 我认为这是一个
  • 使用带有两个列表而不是一个列表的地图。可以筑巢吗?

    我需要多次运行一个带有两个参数的函数 我有两个包含这些参数的列表 我希望能够使用map或类似的东西用相应的参数调用函数 我要调用的函数具有以下类型 runParseTest String gt String gt IO 列表的创建方式如下
  • Control.Parallel.Strategies 中 Eval 的绑定运算符如何严格评估其参数?

    Control Parallel Strategies 的源代码 http hackage haskell org packages archive parallel 3 1 0 1 doc html src Control Paralle
  • Haskell 处理负参数

    尝试对两个值求和 其中只有一个为负值 例如 1 and 2 soma Float gt Float gt Float soma x1 x2 x1 x2 结果出现错误 为什么
  • 如何使用foldr为列表创建显示实例?

    我想为我的数据类型 我的列表 编写自己的显示实例 到目前为止 我的方法是有效的 但我总是在末尾有一个逗号 我已经尝试用最后一个元素启动折叠并将其从列表中删除 但它很麻烦而且不起作用 有没有更简单的方法来获得正确的解决方案 实际 1 2 3
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • Haskell 中多核编程的现状如何?

    Haskell 中多核编程的现状如何 现在有哪些项目 工具和库可用 有哪些经验报道 2009年至2012年期间 发生了以下事件 2012 从 2012 年开始 并行 Haskell 状态更新开始出现在并行 Haskell 摘要 http w
  • 由于垃圾收集,Haskell 程序中会出现多长时间的暂停?

    关于我的另一个问题Haskell 集合可以保证每个操作的最坏情况范围 https stackoverflow com q 12393104 1333025 我很好奇 垃圾收集会导致多长时间的暂停 Haskell 是否使用某种增量垃圾收集 以
  • 在列表中查找元素及其索引

    我需要让列表的两个元素都满足谓词and这些元素的索引 我可以通过以下方式实现这一点 import Data List findIndices list Int list 3 2 4 1 9 indices findIndices gt 2
  • 使用 Parsec 解析正则表达式

    我正在尝试通过实现一个小型正则表达式解析器来学习秒差距 在 BNF 中 我的语法类似于 EXP EXP LIT EXP LIT 我尝试在 Haskell 中实现这一点 expr try star lt gt try litE lt gt l
  • 这是 unsafeCoerce 的安全使用吗?

    我遇到的情况是 我目前正在使用极其可怕的函数 unsafeCoerce 幸运的是 这并不是为了任何重要的事情 但我想知道这是否是该函数的安全使用 或者是否有其他方法可以解决其他人知道的这个特定问题 我的代码类似于以下内容 data Toke
  • 如何与更高级别的类型合作

    玩弄教堂的数字 我遇到了无法指导 GHC 类型检查器处理高阶类型的情况 首先我写了一个版本 没有任何类型签名 module ChurchStripped where zero z z inc n z s s n z s natInteger

随机推荐

  • extjs 使用 up 和 down 方法

    我正在尝试使用up and down打电话而不是Ext getCmp但我不太明白 我有这个代码 listeners change function field selectedValue Ext getCmp wildAnimal setV
  • 关于带有圆角的 UIImageView

    我试图制作一个带有圆角的 UIImageView 所以我使用了 imageView layer setCornerRadius 5 0f 它有效 但并不完美 如果你仔细观察 你可以看到图像的角落 我上传了一张照片 不知道你是否能看清楚 角落
  • Vaadin 10 基于内容的网格样式单独行

    我正在使用 Vaadin 网格来显示传入信息并实时更新 我已经能够通过访问 DOM 来设置所有行的样式 如下所示
  • Visual Studio 2010 中的 ASP.Net MVC 1.0

    Visual Studio 2010 是否与 MVC 1 0 兼容 大家好 感谢您提前阅读 我正在使用 MVC 1 0 项目和 VS2008 我很高兴升级到 VS2010 但我怀疑它与 MVC 1 0 的兼容性 你做完了吗 结果如何 一切似
  • 在私有子网中运行时 AWS EKS 上的 DNS 问题

    我在 VPC 中设置了 EKS 集群 工作节点在私有子网中启动 我可以成功部署 Pod 和服务 但是 我无法从 Pod 内执行 DNS 解析 它在容器外部的工作节点上运行良好 使用故障排除https kubernetes io docs t
  • 如何识别分区的名称

    从下面的分区中如何知道哪些分区是引导分区 哪些分区是系统分区 我需要执行任何不同的命令来读取分区名称吗 cat proc partitions major minor blocks name 253 0 409600 zram0 179 0
  • 在直方图中绘制 x 刻度 matplotlib

    我想绘制给定名称对应的 x 我的意思是 对于foo它必须绘制 10 20 30 以直方图的形式并且所有 foo bar baz 需要位于相同的位置graph http upload wikimedia org wikipedia commo
  • web.config 单用户基本身份验证

    在 nginx 中 我可以创建一个发送的身份验证响应 WWW Authenticate 基本领域 专用网络 导致弹出单个用户 密码的登录信息而不创建 login aspx 这是我的配置设置
  • Java 设计问题:强制方法调用顺序

    最近在采访中有人问我一个问题 Problem 有一个类旨在分析代码的执行时间 类是这样的 Class StopWatch long startTime long stopTime void start set startTime void
  • jQuery如何在不检查扩展名的情况下检查上传的文件是否是图像?

    这里是新手 问题是我目前已经编写了一种方法来检查上传的文件大小和扩展名以验证它 然而 检查扩展并不是一个解决方案 因为这种验证可能会导致很多问题 我想做的是检查实际的文件类型并验证它而不使用扩展方法 我尝试过使用jQuery 文件验证器 h
  • 转码视频文件之前需要检查视频分辨率

    我正在使用弹性转码器转换视频文件 AWS Lambda函数从s3存储桶获取视频文件并根据PresetId进行转换 但是 我需要将视频文件分辨率与 PresetId 进行比较 如果视频文件分辨率高于PresetId视频分辨率 则转换该视频文件
  • 文件不以“%PDF-”开头

    昨天我遇到了一个特殊的问题 一位客户将我的一个 Delphi 应用程序安装在一些东芝笔记本电脑上 一切都很好 直到生成一些 Acrobat 文件作为 Rave 7 报告时 才产生了主题错误 这些笔记本电脑安装了 Acrobat 7 Stan
  • 找不到“Flutter/Flutter.h”文件 webview_flutter-1.0.7

    请帮我 我不知道是什么问题 但我认为是因为我更新到了最新版本的 flutter 我尝试过 flutter clean rm podfile 等等 但我无法解决这个问题 是颤振的问题吗 我花了两天时间尝试修复它 但没有成功 我更新了我所有的
  • Haskell 使用惰性 mmap 读取最后一行

    我想读取文件的最后一行 并确保它的字段数与第一行相同 我不关心中间的任何内容 我使用 mmap 是因为它对大文件的随机访问速度很快 但遇到了不理解 Haskell 或懒惰的问题 gt import qualified Data ByteSt
  • 操作员使用 tempdb 溢出......带有变量但不带有文字

    需要帮助理解此 SQL Server 行为 我有一个相当基本的查询 比如 select x y sum z from table where date between start and end group by x y 行数较多 筛选条件
  • 导入模块中的 Angular 2 路由覆盖当前路由

    这是笨蛋 https plnkr co edit WIFNVIEVqls4gXk21Muj https plnkr co edit WIFNVIEVqls4gXk21Muj 有 2 个模块都定义了路由 模块 2 导入模块 1 以使用其中的组
  • AWS EMR 在集群中所有已运行的计算机上执行“引导”脚本

    我有一个 24 7 全天候运行的 EMR 集群 我无法将其关闭并启动新的 我想做的是在已经运行的集群上执行引导操作之类的操作 最好使用 Python 和 boto 或 AWS CLI 我可以想象分两步完成此操作 1 在所有正在运行的实例上运
  • 使用 mongodb-memory-server 进行单元测试时出现“RangeError:超出最大调用堆栈大小”

    我正在尝试对一些打字稿逻辑进行单元测试jest https github com facebook jest 我在用mongoose https github com Automattic mongoose为了与 mongo 数据库交互mo
  • 有没有关于如何在 iPhone 上处理 OFX 的库或示例?

    我正在开发一款资金处理 iPhone 应用程序 并且希望使用开放金融交易 OFX 标准与消息源进行交互 提供有关该标准的信息here http geekswithblogs net Lance archive 2007 06 27 E Ba
  • 网络的完整示例?

    我读过网络快速开始 http hackage haskell org packages archive netwire 4 0 7 doc html Control Wire html 但我无法想象整个事情在 真实 应用程序中的样子 由于本