从箭头符号转换

2023-12-21

我仍在尝试了解箭头表示法和 Haskell 中定义的 Arrow 类型类的语义之间的相似之处。尤其,这个问题 https://stackoverflow.com/questions/6976944/how-does-arrowloop-work-also-mfix似乎有一个非常规范的用箭头表示法编写的小计数器示例:

counter :: ArrowCircuit a => a Bool Int
counter = proc reset -> do
        rec     output <- returnA -< if reset then 0 else next
                next <- delay 0 -< output+1
        returnA -< output

有人可以告诉我如何在没有箭头符号的情况下将其转换回 Haskell2010 吗?


{- |
                     +---------+
 >Bool>-------------->         |
                     |         >------------------>Int>
       +---------+   |  arr f  |
  /----> delay 0 >--->         >---------\
  |    +---------+   |         |         |
  |                  +---------+         |
  |                                      |
  \--------------------------------------/ 

 -}
counter' :: ArrowCircuit a => a Bool Int
counter' = loop $ second (delay 0) >>> arr f
  where
    f (reset, next) = let output = if reset then 0 else next
                          next' = output + 1
                       in (output, next')

递归rec部分是使用实现的loop。转换的内部部分reset to output using next(并生产新的nextvalue)只是一个具有两个输入和两个输出的纯函数。

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

从箭头符号转换 的相关文章

  • Haskell 下划线与显式变量

    我已经学习 Haskell 几个星期了 我有一个关于下划线的使用的问题 作为函数参数 我认为用一个具体的例子来问我的问题会更好 假设我想定义一个函数 根据提供的索引提取列表的元素 是的 我意识到 已经是预先定义的 我可以定义该函数的两种方法
  • 持久 selectList 导致错误“无法将类型‘BaseBackend backend0’与‘SqlBackend’匹配”

    我遇到以下编译错误 Couldn t match type BaseBackend backend0 with SqlBackend arising from a use of runSqlite The type variable bac
  • Haskell:是的,没有类型类。为什么是整数?

    我有一个关于 GHCi 如何假定整数类型的问题 我正在阅读 Learn you a Haskell 是 否类型的课程 如果您想阅读全文 这里有一个链接 http learnyouahaskell com making our own typ
  • Haskell 中的中缀运算符优先级

    对于以下 Haskell 表达式 返回 a gt gt f 应该读作 返回a gt gt f or 返回 a gt gt f 这里的相关规则是什么 规则始终是函数应用程序的优先级高于任何运算符 因此 return a gt gt f 被解析
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • Haskell 中的尾递归字符串分割

    我正在考虑分割字符串的问题s在一个字符处c 这表示为 break c s 其中 Haskell 库定义break c 足够接近 br br s h t if c h then s else let h t br t in h h t 假设我
  • 简单 Haskell Monad - 随机数

    我正在尝试扩展代码这个帖子 https stackoverflow com questions 3944170 haskell and state 接受的答案 允许我能够基于以种子作为参数的函数 randomGen 调用 randomGen
  • Haskell Stack 从 github 安装包依赖项

    是否可以使用 Haskell 堆栈从 github 安装软件包的版本 例如在一个 cabal or a stack yaml文件 如何在 git repo branch revision 上指向依赖项 对于堆栈 The 的文档stack y
  • 找不到模块“Yesod”

    我有以下代码 LANGUAGE TypeFamilies QuasiQuotes MultiParamTypeClasses TemplateHaskell OverloadedStrings module Simple where imp
  • Haskell:IORef 的性能

    我一直在尝试在 Haskell 中编码一个需要使用大量可变引用的算法 但与纯粹的惰性代码相比 它 也许并不奇怪 非常慢 考虑一个非常简单的例子 module Main where import Data IORef import Contr
  • 这个对自身单位的列表理解是如何工作的?

    在 haskell IRC 频道中有人问 是否有一种简洁的方法来定义一个列表 其中第 n 个条目是之前所有条目的平方和 我认为这听起来像一个有趣的谜题 递归定义无限列表是我真正需要练习的事情之一 所以我启动了 GHCi 并开始尝试递归定义
  • Haskell 输入返回元组

    我想知道 IO 函数是否可以返回元组 因为我想从这个函数中获取这些元组作为另一个函数的输入 investinput IO gt Char Int investinput do putStrLn Enter Username username
  • 在 monad 转换器类型类中使用列表 monad?

    我的目标是创建一个在 ReaderT WriterT 堆栈或 RWS 堆栈中使用列表 monad 的函数 更一般地说 如何在 mtl 类型类 例如 MonadReader MonadWriter 中使用列表 monad 我为什么要尝试这样做
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • 类型级别集结合律的证明

    我试图证明类型级函数Union https hackage haskell org package type level sets 0 8 5 0 docs Data Type Set html t Union是关联的 但我不确定应该如何完
  • 迭代打印列表中的每个整数

    假设我有一个整数列表l 1 2 我想打印到stdout Doing print l产生 1 2 假设我想打印不带大括号的列表 map print l产生 No instance for Show IO arising from a use
  • 纯 Haskell 代码需要线程池吗?

    In 现实世界 Haskell 第 28 章 软件事务内存 http book realworldhaskell org read software transactional memory html 开发了一个并发网络链接检查器 它获取网
  • 为什么在 where 子句中使用类型签名如此罕见?

    它是否有助于编译器优化 或者只是添加额外类型签名的多余工作 例如 人们经常看到 foo a gt b foo x bar x where bar x undefined 而不是 foo a gt b foo x bar x where ba
  • RankN多态性和令人发指的克莱斯利之箭

    我不明白为什么 demobind1 的定义会产生一些编译器错误 它看起来像一个愚蠢的翻转 但不知何故 LANGUAGE GADTs LANGUAGE RankNTypes ScopedTypeVariables TypeOperators
  • 如何使用foldr为列表创建显示实例?

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

随机推荐

  • Angular HttpClient 获取请求 URL 删除主题标签/数字符号

    我正在使用 httpclient get 当我有 在请求 URL 中 它会删除后面的所有内容 Example 预期要求 https jsonplaceholder typicode com users 1 TEST 实际要求 https j
  • 具有自定义子项的 MUI 选择组件

    我正在尝试创建一个Select具有通过列表映射的一系列自定义项的组件 每个项目都有一个特定的类型 并且根据该类型 菜单项将具有特定的 MUI 图标 我创建了一个特定的组件来管理整个Select组件和另一个特定组件来显示每个项目 其值及其图标
  • 将内存中的 H2 数据库保存到磁盘

    如何以二进制模式将完整的嵌入式 h2 内存数据库保存 加载到某个文件或目录以加快加载速度 我想用它来缓存数据 这样我就不必每次都运行创建表 插入子句的所有行 您可以使用常规 持久 数据库 而不是使用内存数据库 即使这样 您仍然可以使用内存表
  • Python 3.6 urllib TypeError:无法将字节连接到 str

    我正在尝试使用 Python 3 6 中的 urllib 从 API 中提取一些 JSON 数据 它需要传递标头信息以进行授权 这是我的代码 import urllib request json headers authorization
  • 提升精神气整数,文字默认值

    我想解析具有特定文字默认值的数字 例如 如果程序接收到 nan 或 n a 则整数默认值为 1 Example program include
  • ElasticSearch 在哪里存储持久设置?

    当我通过以下方式获取 ElasticSearch 服务器设置时 curl XGET localhost 9200 cluster settings 我看到持久性和瞬态设置 persistent cluster routing allocat
  • 通过 powershell 或 Azure Devops 管道步骤在 Azure 数据工厂上以编程方式“发布”

    这个问题不会有任何代码 因为到目前为止我还没有找到任何可能的方法 但甚至没有直接的方法不 这是不可能的 Azure 数据工厂使用adf 发布分支作为 master 之上的官方分支 当用户在 GUI 上单击时 ADF 将所有管道 触发器 链接
  • 检查所有 AsyncTask 是否已完成

    我有 3 个AsyncTasks and 1 ProgressBar 我希望当任何任务执行时 进度条可见 当所有任务完成时 进度条不可见 在Java中 有ExecutorService isTerminated检查所有可运行程序是否已完成
  • 数据表是否缓存 ajaxSource 的结果?

    我已经在 portlet war 文件中嵌入了 jquery 数据表 并且遇到了一些有趣的行为 我需要一些解释 这就是我的 javascript 的样子 http pastebin com qXpwt9A7 http pastebin co
  • 密码保护 CSV 文件

    我正在使用 csv 文件来验证用户登录 是否可以使用密码保护 CSV 文件 我不希望任何人能够通过 url 下载 csv 文件 我用谷歌搜索 发现无法用密码保护 csv 文件 还有其他方法可以用密码保护文件吗 简而言之 答案是否定的 CSV
  • 遗传算法——染色体可以是树吗?

    我正在写我的学位论文 我正在尝试创建一个 GA 以程序化的方式为游戏创建关卡 即使 GA 不是最好的技术 也是可能的 不管怎样 因为我从未与他们一起工作过 所以我正在阅读一些关于 GA 介绍的书籍 问题是 是否有必要将染色体表示为位 或者它
  • ON [主要] 是什么意思?

    我正在创建一个 SQL 设置脚本 并使用其他人的脚本作为示例 这是脚本的示例 SET ANSI NULLS ON GO SET QUOTED IDENTIFIER ON GO CREATE TABLE dbo be Categories C
  • 在 web.config 中设置后,maintainScrollPositionOnPostback="true" 不起作用,但在页面级别起作用,我该怎么办?

    setting 维护ScrollPositionOnPostback true 全局在 web config 中确实有效在我的 xp sp3 中 iis 5 1 下 但不适用于生产服务器 带有 NET 3 5 sp1 和 IIS 6 的 w
  • 我可以将 gRPC 和 webapi 应用程序组合到 C# 中的 .NET Core 3.0 中吗?

    我使用的是 net core 3 0 我有 gRPC 应用程序 我可以通过 gRPC 协议与其进行通信 我认为我的下一步是添加一些 RESTful API 支持 我修改了我的启动类以添加控制器 路由等 当我尝试使用浏览器导航到 API 时
  • org.xml.sax 包可以从多个模块访问:、java.xml

    我们很久以前就写好了 Eclipse 插件 合规级别为 java 1 8 现在我已经将其更改为java 11 我们正在使用and 在构建时 我收到以下错误 org xml sax 包可以从多个模块访问 java xml 有人可以帮忙吗 提前
  • Ruby 音频库

    有没有好的 Ruby 音频库可供我们构建 需要管理 编辑mp3文件 有一个界面 http rubyforge org projects id3lib ruby 到 C mp3 编辑器 以及一个活动的纯红宝石 http rubyforge o
  • linux-kernel模块中的系统调用拦截(内核3.5)

    我需要用我自己的实现替换标准系统调用 例如 SYS mkdir 正如我在一些来源中读到的 包括这个问题 https stackoverflow com questions 12613301 loadable kernel module pr
  • Android:从回收器适配器更改购物车菜单徽章计数器

    我正在尝试开发电子商务类型的应用程序 用户可以在其中将商品添加到购物车 但我无法从适配器更新购物车徽章计数器 这是我的应用程序的屏幕截图 我正在片段内使用回收器视图 我在下面引用了这个链接来了解菜单项的数量 https mobikul co
  • Android远程安装应用程序

    这款 Android 应用程序 B 计划 声称您可以远程安装和运行它 而无需将手机放在您面前 http android tips com remote install an app after you loose your phone to
  • 从箭头符号转换

    我仍在尝试了解箭头表示法和 Haskell 中定义的 Arrow 类型类的语义之间的相似之处 尤其 这个问题 https stackoverflow com questions 6976944 how does arrowloop work