优化自由 Monad

2023-12-29

如果我有一个价值a: Free[Op, A],是否有可能“扁平化”结构a这样两个Op被自由单子束缚在一起的 s 可以折叠成一个吗?

Context:我想在解释之前执行此操作作为优化步骤,因为语义Op是它的操作是幂等的。因此,如果两个“连续”出现,则可以在不影响程序语义的情况下消除第二个。


据我了解,Free Monad 程序无法进行这种内省,因为它代表顺序计算,其中每个步骤都依赖于另一个步骤的结果。

John de Goes 有一篇关于 Free Monad 与 Free Applicative 优缺点的精彩演讲(https://www.youtube.com/watch?v=H28QqxO7Ihc https://www.youtube.com/watch?v=H28QqxO7Ihc)。后者赋予内省的力量。

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

优化自由 Monad 的相关文章

  • Scala 2.10、Double.isNaN 和拳击

    在 Scala 2 10 中 是someDouble isNaN预计装箱 运行我的代码调用 isNaN通过反编译器 我仍然看到对double2Double在我的代码中 鉴于新的AnyVal在 2 10 中工作 我希望它不会比java lan
  • 如何向 Scotty 中间件添加基本身份验证?

    我目前正在制作 Scotty API 但找不到任何 basicAuth 实现的示例 Wai Middleware HttpAuth 具体来说 我想将基本身份验证标头 用户 通行证 添加到我的某些端点 即以 admin 开头的端点 我已经设置
  • Scalaz 7 Iteratee 处理大型 zip 文件(OutOfMemoryError)

    我正在尝试使用 scalaz iteratee 包在恒定空间中处理大型 zip 文件 我需要对 zip 文件中的每个文件执行一个长时间运行的进程 这些进程可以 并且应该 并行运行 我创建了一个EnumeratorT使每个膨胀ZipEntry
  • Scala 中使用转义特殊字符解码字符串问题

    我有一个多行 JSON 文件 其中包含编码为十六进制的特殊字符的记录 以下是单个 JSON 记录的示例 x22value x22 x22 xC4 xB1arines Bint xC4 xB1 xC3 xA7 Ramu xC3 xA7lar
  • 将无形状 HList 转换为 TupleN,其中元组形状不需要与 HList 形状完全匹配

    我想创建相当于 def toTupleN A1 AN L lt HList l L TupleN A1 AN 代码使用toTupleN仅当恰好有一个时才应该编译N中的值的组合l可以从中创建元组 其他任何内容都应该生成编译时错误 应考虑可用的
  • 将 Scala Dataframe 写入 CSV 文件时应用 UTF8 编码

    在 Spark2 Scala 中将数据帧写入 CSV 文件时如何正确应用 UTF8 编码 我正在使用这个 df repartition 1 write mode SaveMode Overwrite format csv option he
  • 了解如何使用 apply 和 unappy

    我试图更好地理解 的正确用法apply and unapply方法 考虑到我们想要序列化和反序列化的对象 这是正确的用法吗 即斯卡拉方式 的使用apply and unapply case class Foo object Foo appl
  • 对于空列表,max() 应该返回什么?

    Got java util NoSuchElementException head of empty list所以我试着检查一下 但现在我明白了 info max of a few numbers FAILED info 0 did not
  • Scala:具有复杂结构的树插入尾递归

    我正在 scala 中创建自定义对象树 并且我的插入方法引发堆栈溢出 因为它不是尾递归 但是 我不太清楚如何使其尾递归 我见过使用 累加器 变量的相关示例 但它们要么是只能相乘和覆盖的整数之类的东西 要么是我在适应树时遇到困难的列表 这是我
  • Scala 相当于 Java 的 Number

    我正在尝试为数值域类型构建类型层次结构 例如AYear is an Int 这是一个Number a Percentage is a Double 这是一个Number等等 我需要层次结构以便我可以调用toInt or toDouble关于
  • 最小重复子串

    我正在看 Perl代码高尔夫页面 http www perlmonks org node id 82878 不要问为什么 并遇到了这个 第 3 洞 最小重复图案 编写一个子例程 它接受一个字符串 该字符串可能包含 重复模式 并返回最小的重复
  • 如何抑制spark输出控制台中的“Stage 2===>”?

    我有数据帧并试图获取不同的计数并且能够成功获取不同的计数 但是每当 scala 程序执行时我都会收到此消息 Stage 2 gt 1 1 2 我如何在控制台中抑制特定的此消息 val countID dataDF select substr
  • 如何在不进行尾调用优化的情况下用函数式编程替代方案替换 while 循环?

    我正在 JavaScript 中尝试一种更实用的风格 因此 我用诸如map和reduce之类的实用函数替换了for循环 然而 我还没有找到 while 循环的功能替代品 因为尾部调用优化通常不适用于 JavaScript 据我了解 ES6
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 为什么《Scala 中的函数式编程》一书的“无异常处理错误”一章中没有提到“scala.util.Try”?

    在 Scala 中的函数式编程 一书中的 无异常处理错误 一章中 作者给出 从函数体抛出异常的问题 Use Option如果我们不关心实际的异常 Use Either如果我们关心实际的异常 But scala util Try没有提到 从我
  • Scala Tuple2Zipped 与 IterableLike zip

    两种实现有什么区别 这个比那个好吗 有一篇博客文章说 Tuple2Zipped 性能更好 但没有提供原因 并且查看源代码我没有看到差异 val l1 List 1 2 3 val l2 List 5 6 7 val v1 l1 zip l2
  • 运行具有外部依赖项的 Scala 脚本

    我在 Users joe scala lib 下有以下 jar commons codec 1 4 jar httpclient 4 1 1 jar httpcore 4 1 jar commons logging 1 1 1 jar ht
  • 使用spark phoenix从表中读取rdd分区号为1

    当我运行我的火花代码时 val sqlContext spark sqlContext val noact table primaryDataProcessor getTableData sqlContext zookeeper table
  • 对 Scala Not Null 特征的库支持

    Notice 从 Scala 2 11 开始 NotNull已弃用 据我了解 如果您希望引用类型不可为空 则必须混合魔法NotNull特征 编译器会自动阻止你输入null 可以值在里面 看到这个邮件列表线程 http www nabble
  • 使用 scala 集合 - CanBuildFrom 麻烦

    我正在尝试编写一个接受任何类型集合的方法CC 并将其映射到一个新的集合 相同的集合类型但不同的元素类型 我正在挣扎 基本上我正在尝试实施map but 不在集合本身上 问题 我正在尝试实现一个带有签名的方法 它看起来有点像 def map

随机推荐

  • Caliburn Micro WPF 窗口管理

    我想使用 caliburn micro 启动一个 WPF 应用程序 这样我就可以尽可能地使用 TDD 我之前在 WP7 中使用过 caliburn micro 但 WPF 似乎是另一艘船 并且文档不完整与 WP7 一样 我已经用我的 Boo
  • 是否可以在 Scala 解释器中定义伴随类/模块?

    在 Scala 解释器中进行测试通常很方便 然而 我遇到的一个问题是 我必须重构使用隐式转换的代码 因为定义一个与现有类同名的对象does not使其成为 REPL 中的配套模块 因此 当我翻译回 真实源代码 时 我不能确信我的代码仍然可以
  • 临时和表达行为

    这是明确定义的行为吗 const char p std string Hello std string World c str std cout lt lt p 我不知道 原因 不 这是未定义的行为 两个都std string临时对象和返回
  • Javascript 数组查找效率:关联与存储关联?

    我一直在阅读 他们说关联数组不会给你提供与数组相同的效率 关联数组可以在 O N 时间内查找内容 而数组可以在 O 1 时间内查找内容 这是我的问题 在快速查找值并且不占用太多内存方面 哪一个更有效 联想 var myVars new Ar
  • 在 C# 中创建自定义 ODBC / OLE 驱动程序

    有谁知道如何最好用 C 创建 ODBC 或 OLE 驱动程序 我想要做的是创建一个可以在 Excel 和 Access 中使用的自定义数据源 或者想出另一种方法来做到这一点吗 预先感谢您的回复 C 中有一个 OLE DB 驱动程序的简化版本
  • 根据行数调整 jqGrid 的大小? - 网格高度?

    我遇到了与帖子中详细说明的相同问题根据行数调整 jqGrid 的大小 https stackoverflow com questions 1972806 一些建议 看起来完全合乎逻辑 不起作用 因为当我尝试使用以下命令获取网格的高度时var
  • Thymeleaf 注册页面 - 执行处理器“org.thymeleaf.spring4.processor.attr.SpringInputGeneralFieldAttrProcessor”期间出错

    我正在为一个网站制作一个注册页面 我知道为了创建新用户 需要一个 id 所以我们有这个字段
  • mongodb 性能不佳

    我目前正在使用 mongodb 并且我发现查询性能非常差 可能需要几秒钟 场景如下 我有一个结构文件 id xxx userId yyy a 1 b 2 counter 1 在测试中 userId value could be 1 200
  • Python 多处理池突然停止

    我正在尝试根据我的要求执行并行处理 并且代码似乎可以按预期并行处理 4k 5k 元素 但是 一旦要处理的元素开始增加 代码就会处理一些列表 然后在没有抛出任何错误的情况下 程序突然停止运行 我检查过 程序没有挂起 RAM 可用 我有 16
  • 通过在单元格中键入内容将项目动态添加到 DataGridView ComboBox 列

    我有一个DataGridView有一个ComboBox列 我必须在其下拉列表显示时更新每个组合框的可能值 我还必须使ComboBoxes 能够具有自定义类型的值 当输入新值时 应将其添加到可能值列表中 问题是我得到了无穷多个DataErro
  • 如何在 vi 编辑器中向左移动一个单词

    I use the shortcut w to move the cursor one word right Is there a shortcut to move a word left Use b to move back one wo
  • 如何将语音识别添加到Unity项目中? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我目前正在使用 Vuforia 开发一个增强现实项目 该项目使用语音识别来控制 Unity 中的对象
  • Android adb 无线调试与 USB 配件

    我有 adb 无线连接用于在 eclipse 中调试应用程序 但我在使用 USB 电缆连接到附件的应用程序时遇到问题 该应用程序设计为在插入附件时启动 因此我建立 ADB 连接 然后在 Eclipse 上运行调试 代码加载等 现在 当我将附
  • 如何在 docker python API 中流式传输日志?

    我正在使用 docker python API 从 Dockerfile 构建图像 import os import sys import os path import docker client docker from env try h
  • 安装/捆绑 gem unf_ext -v '0.0.6' 时出错

    我正在尝试捆绑安装unf ext v 0 0 6 但我不断收到此错误 Gem Ext BuildError ERROR Failed to build gem native extension checking for main in ls
  • NodeJS Google Vision 无法检测当前环境中的项目 ID

    Ubuntu环境下 NodeJS Google Vision抱怨 Error 无法在当前环境中检测到项目 ID 即使我已经通过了 json 凭证 export GOOGLE APPLICATION CREDENTIALS var crede
  • pgAdmin 执行脚本的快捷方式

    谁知道 pgAdmin 查询工具中执行脚本的快捷方式 即执行整个查询并执行当前脚本 Select the relevant portion and hit the F5 key in the SQL editor of pgAdmin OR
  • vxworks 中的 C++ 11

    我是VxWorks的新手 我正在VxWorks平台上使用C 开发一个软件 我想知道VxWorks编译器是否支持C 11标准 我问这个问题的原因是因为没有可用的shrink to fit std vector 函数 该函数是在c 11 标准中
  • cvc-complex-type.3.2.2:属性 xsi:schemaLocation 不允许出现在 Java DOM 中的

    我正在尝试使用 DOM 验证器在 Java 中使用 XSD 来验证我的 XML 尽管我手动知道该文档确实有效 但 DOM 验证器却对我喊道 cvc complex type 3 2 2 Attribute
  • 优化自由 Monad

    如果我有一个价值a Free Op A 是否有可能 扁平化 结构a这样两个Op被自由单子束缚在一起的 s 可以折叠成一个吗 Context 我想在解释之前执行此操作作为优化步骤 因为语义Op是它的操作是幂等的 因此 如果两个 连续 出现 则