- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
ap
没有记录的规范,并带有注释指出它可能是 <*>
,但不是出于实际原因:
ap :: (Monad m) => m (a -> b) -> m a -> m b
ap m1 m2 = do { x1 <- m1; x2 <- m2; return (x1 x2) }
-- Since many Applicative instances define (<*>) = ap, we
-- cannot define ap = (<*>)
所以我假设 ap
在 (<*>) = ap
law 是“ap 的右侧”的简写,并且 law 实际上表达了 >>=
之间的关系。 , return
和<*>
正确的?否则法律就没有意义。
上下文是我在思考Validation
它似乎没有合法性,这是多么令人不满意Monad
实例。我也在考虑ApplicativeDo
以及这种转变如何让我们从 Monad
的实际影响中恢复过来Validation
的实例;我最常想做的就是尽可能地累积错误,但在必要时仍然能够使用bind。我们实际上导出了一个bindV
我们几乎在任何地方都需要使用这个函数,这有点 absurd 。我能想到的无法无天的唯一实际后果是,我们积累了不同或更少的错误,具体取决于我们使用哪种组合(或者理论上我们的程序如何通过重写规则进行转换,尽管我不确定为什么应用组合会永远存在)转换为一元)。
编辑:Monad
中相同法律的文档更广泛:
Furthermore, the Monad and Applicative operations should relate as follows:
pure = return
(<*>) = apThe above laws imply:
fmap f xs = xs >>= return . f
(>>) = (*>)
“上述法律意味着”...那么这里的想法是这些是我们关心的真正法律吗?
但现在我只能在 Validation
的背景下尝试理解这些内容。第一条定律成立。如果我们只定义(>>) = (*>)
,第二个显然可以成立。 。
但是 Monad
的文档令人惊讶的是,关于如何>>
什么也没说(除非我只是错过了)应该相关。想必我们想要这样
a >> b = a >>= \_ -> b
...和 (>>)
包含在类中,以便可以为了效率而重写它,但这从未完全进入文档。
所以,如果是这样,那么我猜是这样的 Monad
和Applicative
关联实际上是这样的:
return = pure
xs >>= return . f = fmap f xs
a >>= \_ -> b = fmap (const id) a <*> b
最佳答案
每个Monad
产生Applicative
,并为此引发Applicative
, <*> = ap
将定义地成立。但给定两个结构 - Monad m
和Applicative m
- 如果没有这两个法律,则无法保证这些结构一致 <*> = ap
和pure = return
。例如,采用“常规”Monad
列表的实例,以及 zip-list Applicative
实例。虽然 Monad
从根本上来说并没有什么“错误”。和Applicative
如果不同意,它可能会让大多数用户感到困惑,因此 Monad
禁止这样做。法律。
tl;dr 有关法律旨在确保 Monad
和Applicative
以直观明显的方式达成一致。
关于haskell - `(<*>) = ap` Applicative/Monad 法则到底如何关联这两个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46913472/
我注意到在将日期转换为字符串时缺少“ap/a/AP/a”。对于“h:m:s ap”,即我得到“11:5:42”。对于每个“ap/a/AP/a”形式也会发生同样的情况。 我缺少什么? void Deco
我想扫描并列出可用的 WIFI 接入点,并允许用户从 Windows 应用商店应用程序的自定义界面连接到一个接入点。 我知道 WiFi native API,但无法在 Windows 应用商店应用程序
所以在 Xcode 中,供应配置文件说 aps-environment 授权是其中的一部分,但在存档之后供应配置文件缺少 aps-entitlement。 最佳答案 Xcode 8 发行说明提到了这个
我试图了解ap,但遇到了麻烦。 在 fantasyland ,詹姆斯·福布斯 说: First we teach a function how to interact with our type, b
我的字符串是“2358132235”。我需要找出这是否是字符串数字正在进行算术级数。我可以做到直到8,但当我达到13时,我不知道如何处理多位数字在这里。有人可以帮忙吗。谢谢。 私有(private)静
刚收到一封来自 Apple 的电子邮件,说明我的应用是(复制如下) 好的,没问题。我删除了旧的配置文件,确保新的配置文件有一个 aps key **aps-environment production
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况有关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visit
1、视图 ? 1
with data as ( select 1 id, 'A' name, 'fruit' r_group, '2007' year, '04' month, 5 sales from dual
由于某种原因,我们的临时配置文件没有 aps-environment 权利!我们已确保在为该应用 ID 启用生产 apns 后生成配置文件。实际上,我们甚至为该应用程序 ID 创建了一个新的临时配置文
我已阅读 Where does xcode take application's Identifier from? , XCode bundle identifier formatting from
我正在经历https://www.scala-exercises.org/对于猫来说。我想我明白Apply.ap 是什么意思。但我看不到它有任何用途。 有什么区别: Apply[Option].map
我正在编写一个函数,该函数接受一个值作为输入,在该输入上调用一个函数,如果结果是Just x,它应该返回x;否则,它应该返回原始输入。 换句话说,这个函数(我不知道该调用什么): foo :: (a
我是OpenCV的新手。我正在使用anaconda spyder控制台编写Python代码。我在这里采用了代码形式(https://www.pyimagesearch.com/2014/08/25/4
在 Haskell 中使用“ap”monad 的正确方法是什么?我想做类似的事情: main = (putStr . ap (++) show) "main = (putStr . ap (++) s
在我接触到这个方法之前,我以为我理解了递归。我对这件事的时间安排感到非常惊讶,因此请求你们的帮助。 public static void mystery5(String sWord) { in
我正在经历https://www.scala-exercises.org/对于猫来说。我想我明白Apply.ap 是什么意思。但我看不到它有任何用途。 有什么区别: Apply[Option].map
我的应用程序在构建期间安装的 Android 设备上成功运行,但是当我通过蓝牙/whatsapp 从我的设备将此应用程序发送到另一台设备时,它无法在此设备上运行,显示应用程序未安装错误...任何机构都
问题是: 给定一个由未知大小的整数和其他三个 int 值组成的 ArrayList,删除 ArrayList 中位于 int 值指定的索引位置的三个元素。将 ArrayList 的第一个元素设置为三个
我是一名计算机科学学生,我不明白为什么我的添加索引的语句不起作用。具体来说,我应该编写一个脚本,为供应商表中的邮政编码字段添加 AP 数据库的索引。我尝试使用以下声明来做到这一点: CREATE IN
我是一名优秀的程序员,十分优秀!