为什么验证不是 Monad?

2024-03-24

一个示例用例:

def div2(i: Int): Validation[String, Int] = 
    if (i%2 == 0) Validation.success(i/2)
    else Validation.failure("odd")

def div4(i: Int) = for {
    a <- div2(i)
    b <- div2(a)
} yield b

error: 无法取消应用类型scalaz.Validation[String,Int]进入类型构造函数M[_]按类型类别分类scalaz.Bind

I guess该错误是由于编译器找不到Monad实例为Validation[String, Int]

我可以为自己做一个,比如:

object Instances {
implicit def validationMonad[E] = new Monad[({type L[A] = Validation[E, A]})#L] {
    override def point[A](a: => A) =
        Validation.success(a)
    override def bind[A, B](fa: Validation[E, A])(f: A => Validation[E, B]) =
        fa bind f
}
}

但为什么不Validation已经有了吗?毕竟,Validation已经拥有了bind方法定义。

而且,我不能有import Validation._ and import Instances._不再在一起了(这花了我很长时间才弄清楚......),因为另一个复杂的 error...
模糊的隐含值:两者类似validationMonad(我的实例)和方法ValidationInstances1特质中ValidationInstances2...都匹配一些Functor of Validation...

我应该修改scalaz的源吗?或者我完全错过了一些东西〜?
请帮忙~

我正在使用 scalaz 7.0.0-M2


As 讨论过 https://groups.google.com/d/msg/scalaz/IWuHC0nlVws/syRUkXJklWIJ在 Scalaz 组中,问题似乎是ap会累积错误,而(伪)单子组合只会对值部分进行操作Validation.

因此,一个不能用另一个来表达,因此不存在 monad 实例Validation.

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

为什么验证不是 Monad? 的相关文章

  • Scala中如何将DataFrame转换为RDD?

    有人可以分享一下如何转换dataframe to an RDD Simply val rows RDD Row df rdd
  • Haskell 真的是纯粹的吗(有任何语言可以处理系统外的输入和输出)吗?

    在谈到函数式编程中的 Monad 后 该功能是否真的使语言变得纯粹 或者它只是黑板数学之外的现实世界中计算机系统推理的另一张 免狱卡 EDIT 这不是有人在这篇文章中所说的火焰诱饵 而是一个真正的问题 我希望有人能用它来击倒我并说 证明 它
  • Play框架2:如何在路由、视图和控制器之间传递对象?

    我正在尝试将书籍对象从视图传递到路线 然后将其发送到控制器中进行计算 我的代码如下 bookList scala html books java lang Iterable Book main BookList div class row
  • 《使用 Apache Flink 进行流处理》如何从 IntelliJ 运行书籍代码?

    如中所述这个帖子 https stackoverflow com questions 61043860 how to run first example of apache flink我无法成功运行 使用 Apache Flink 进行流处
  • 将列表拆分为多个具有固定元素数量的列表

    如何将元素列表拆分为最多包含 N 个项目的列表 例如 给定一个包含 7 个元素的列表 创建 4 个组 最后一组可能包含较少的元素 split List 1 2 3 4 5 6 seven 4 gt List List 1 2 3 4 Lis
  • Scala 性能问题

    In the 丹尼尔 科泽夸 Daniel Korzekwa 撰写的文章 http blog danmachine com 2011 01 moving from java to scala one year html 他说以下代码的性能
  • 新式(“内联”)宏需要 scala.meta

    我刚刚更新到 scala meta 2 0 0 M1 和最新的 scala 2 12 3 现在宏不再编译 我所做的唯一更改是将元版本从 1 8 0 更改为 2 0 0 M1 错误 新式 内联 宏需要 scala meta 有谁知道是否有快速
  • Scala 集合不一致

    为什么 Scala Collections API 中的集合和列表之间缺乏一致性 例如 有不可变的 Set 但也有可变的 Set 如果我想使用后者 我可以简单地这样做 val set Set A set new A 但是 本身不存在可变列表
  • 逆变方法参数类型

    wiki 逆变方法参数类型 https en wikipedia org wiki Covariance and contravariance 28computer science 29 Contravariant method argum
  • Scala 相当于 Java 的 Number

    我正在尝试为数值域类型构建类型层次结构 例如AYear is an Int 这是一个Number a Percentage is a Double 这是一个Number等等 我需要层次结构以便我可以调用toInt or toDouble关于
  • Scala Array.apply 有何魔力

    来自 scala 2 10 4 的 array scala Array定义为 final class Array T length Int extends java io Serializable with java lang Clonea
  • 使用原始类型模拟案例类

    考虑以下类型结构 trait HasId T def id T case class Entity id Long extends HasId Long 比方说 我们想在一些测试中模拟实体类 val entityMock mock Enti
  • 阶乘的 Scala 排列

    我怎样才能找到n Scala 中某些字母的排列 Scala 2 9 RC1 scala gt abc permutations toList res58 List String List abc acb bac bca cab cba
  • 使用 Spray-json 解析简单数组

    我正在尝试 但失败了 了解 Spray json 如何将 json feed 转换为对象 如果我有一个简单的 key gt value json feed 那么它似乎可以正常工作 但是我想要读取的数据出现在如下列表中 name John a
  • 通用特征的隐式转换

    我正在实现一个数据结构 并希望用户能够使用任何类型作为密钥 只要他提供一个合适的密钥类型来包装它 我有这个关键类型的特质 这个想法是进行从基类型到键类型的隐式转换 反之亦然 实际上 只使用基类型 该特征看起来像这样 trait Key T
  • 如何在 Scala 中打印任何内容的列表?

    目前我有一个打印整数的方法 def printList args List Int Unit args foreach println 我如何修改它 使其足够灵活 可以打印任何内容的列表 您不需要专用的方法 所需的功能已经在集合类中 pri
  • Scala 和变量中的模式匹配

    我是 Scala 新手 有点想知道模式匹配是如何工作的 想象一下我有以下内容 case class Cls i Int case b Cls i gt Ok case e Cls gt Ok case f Cls gt Ok case s
  • 使用 scala 集合 - CanBuildFrom 麻烦

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

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将
  • Scala 特性:val/def 和 require

    下面的代码抛出IllegalArgumentException trait T val x Long require x gt 0 object T extends App val y new T val x 42L 而以下情况则不然 tr

随机推荐

  • 在 pandas 中高效使用替换

    我正在寻找使用replace在 python3 中以有效的方式运行 我拥有的代码正在完成任务 但速度太慢 因为我正在处理大型数据集 因此 每当需要权衡时 我的首要任务是效率而不是优雅 这是我想做的一个玩具 import pandas as
  • listview onScroll 方法中某些项目为空

    我有一个列表视图 我重写了它的 onScroll 事件 以便我可以获取列表视图的第一个可见项目上的文本的第一个字符 我的代码如下 Override public void onScrollStateChanged AbsListView v
  • Material-ui 工具提示无法正常工作

    我正在尝试使用material ui 工具提示 我希望工具提示显示在顶部 即使设置后placement top 演示可以找到here https codesandbox io s yjrq3lkk29 我在这里做错了什么 因为页面没有足够的
  • 仅允许在 WPF 文本框中输入数字

    我想验证用户输入以确保它们是整数 我该怎么做 我想用IDataErrorInfo这似乎是在 WPF 中进行验证的 正确 方法 所以我尝试在我的 ViewModel 中实现它 但问题是我的文本框绑定到一个整数字段 并且不需要验证是否int i
  • 多指标散点图

    假设我有以下数据 data Value 1 1 3 0 1 2 4 0 1 3 51 0 1 4 10 0 1 5 2 0 1 6 17 0 1 7 14 0 1 8 7 0 1 9 2 0 1 10 1 0 df pd DataFrame
  • 在不同的子域上使用 Socket.IO 服务器和客户端

    我有两个子域 socket mydomain com Socket IO 服务器 app mydomain com 我想连接到我的网络套接字的网络应用程序 在 app mydomain com 的登陆页面中 我已链接到 Socket IO
  • 使用 IIS-Express 激活压缩(尤其是动态压缩)

    是否可以在 IIS Express 上启用动态压缩 针对 WCF 服务 这是一个开发环境问题 因此我无法使用完整版本 但我需要弄清楚它在压缩时的表现如何 进入 IIS Express 安装文件夹 programfiles IIS Expre
  • 如何在最新的Next.js中获取服务器端数据?尝试了 getStaticProps 但它没有运行并且未定义

    我正在使用 Next js 开发 Django Rest 框架 但我陷入了从 API 获取数据的困境 我在这个网址中有数据http 127 0 0 1 8000 api campaigns当我访问该网址时 我会看到数据 问题是当我使用 Ne
  • 对具有大量零特征的数据进行归一化/标准化是否有利

    我拥有大约 60 个特征的数据 在我的训练数据中 大多数情况下大多数情况下都为零 只有 2 3 列可能有值 准确地说是其性能日志数据 但是 我的测试数据在其他一些列中会有一些值 我已经完成了归一化 标准化 分别尝试了两者 并将其提供给 PC
  • 未处理的承诺拒绝 - 错误:发送后无法设置标头

    我是节点新手 我有一个简单的情况 我正在发布到节点 express 应用程序上的端点 问题是我得到 POST api v2 user 500 25 378 ms 54 node 19024 UnhandledPromiseRejection
  • 带有嵌套 JSON 的 React/Redux mapStateToProps

    我有一个正在解析 JSON 的 redux 组件 在底部 但我不知道如何获取嵌套的子对象 我认为我没有正确理解 mapStateToProps 的工作原理 控制台日志正在转储子对象 但是当我尝试访问 services name 时 我得到
  • Android 数据库陌生列表列

    我在读取 Android SQLite 数据库中的列的两种方法之间得到不一致的结果 首先 这是根据此处接受的答案的数据库升级例程的一部分 将 SQLite 数据库从一个版本升级到另一版本 https stackoverflow com qu
  • CMake add_subdirectory()

    介绍 我正在尝试使用 CMake 来获取跨平台编译脚本 适用于 Windows32 上的 VS 9 0 和 Unix 上的 Makefiles 我遇到了关于 add subdirectory 的一些我无法理解的事情 让我向你展示我的代码 C
  • React Native - 剪贴板中更改的监听器

    有没有办法在 React Native 中添加剪贴板数据更改的侦听器 基本上取决于用户是否在剪贴板中复制了某些内容 无论是在应用程序内部还是在后台应用程序 我想执行一些方法 React Native 没有为您提供监听此类事件的方法 但您有两
  • View 无法锚定到父 CoordinatorLayout

    我刚刚将 appcompat 库从 23 1 1 更新到 23 2 现在应用程序停止处理 java lang IllegalStateException 视图无法锚定到父 CoordinatorLayout java lang Illega
  • 在 Swift 中将字典转换为 JSON

    我已经创建了下一个词典 var postJSON ids 0 answersArray 0 ids 1 answersArray 1 ids 2 answersArray 2 as Dictionary 我得到 2 B 1 A 3 C 那么
  • Angular 1 - 获取当前URL参数

    我想从当前 URL 中提取数据并在控制器中使用它 例如我有这个网址 app dev backend surveys 2 我想要提取的位 应用程序 dev 后端 type id Angular 中有什么可以帮助我完成这项任务吗 从 URL 获
  • Highcharts 日期时间本地化

    有人可以告诉我如何本地化在 HighCharts js 文件中硬编码的日期相关字符串吗 例如 我希望图表显示本地化值 F v 而不是 x 轴中默认的 二月 日期标签 我尝试在实例化图表之前通过在语言对象上设置选项来实现本地化 Highcha
  • 数据透视表 SQL 中的水平总计

    我有这个查询工作 select cap idPlanoContasFin 3684 2234 2 from select cap idPlanoContasFin cap idempresa sum cap valorfatura as S
  • 为什么验证不是 Monad?

    一个示例用例 def div2 i Int Validation String Int if i 2 0 Validation success i 2 else Validation failure odd def div4 i Int f