- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
: A, C](f: => AA\/(B => C))-6ren">
我在看 disjunction scalaz 的类型,我注意到方法 ap
/** 在这个析取权的环境中应用一个函数。 */
def ap[AA >: A, C](f: => AA\/(B => C)): (AA\/C) =
f flatMap (ff => map(ff(_)))
我想我明白它的作用了。现在我想知道何时以及为什么应该实际使用它?有没有使用这个的例子ap
功能 ?
最佳答案
您正在寻找的分离:
import scalaz.{ \/, -\/ \/-, EitherT }
import scalaz.syntax.ToIdOps
object Testing extends ToIdOps // left and right methods come from there {
// say you have the following method
def someMethod(flag: Boolean): \/[Exception, SomeObject] {
if (flag) someObj.right else new Exception("this is a sample").left
}
}
// pattern matching
val x = someMethod match {
case \/-(right) => // this is someObject
case -\/(err) => // deal with the error
}
// catamorphism
def methodThatDealsWithObj(obj: someObject)
def methodThatDealsWithErr(err: Exception)
someMethod.fold(methodThatDealsWithObj)(methodThatDealsWithErr)
// for comprehensions
// ap behaves just like EitherT.
for {
correctResponse <- EitherT(someMethod)
}
EitherT
和
ap
有效,想到一个
Option
,其中有
Some
和
None
和潜在的匹配。与
Option
,你会这样做:
for {
a <- someOption
} yield ..
scalaz.\/
,你通常会放一个
Exception
左侧和右侧的“正确”返回类型。
ap
是一个函数,表示如果两者都具有正确的类型,则应用它。
for {
correctResponse <- ap(someEitherReturnMethod)
}
\/
作为
Future
的返回:
def someComplexThirdPartyApiCall: Future[\/[Exception, CorrectReturn]] = {
}
flatMap
在 future 上,您可以链接上述几种方法,收集和传播错误。
def method1: Future[\/[Exception, String]]
def method2(result: String): Future[\/[Exception, String]]
def chainExample: Future[\/[Exception, Int]] = {
for {
firstResult <- EitherT(method1)
secondResult <- EitherT(method2(firstResult))
} yield secondResult.toInt
}
关于scala - Scalaz 中\/的 "ap"有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22483365/
我注意到在将日期转换为字符串时缺少“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
我是一名优秀的程序员,十分优秀!