加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

管理Scalaz7的进口

发布时间:2020-12-16 09:10:50 所属栏目:安全 来源:网络整理
导读:我正在一个项目中使用 scalaz7,有时我遇到与导入有关的问题.最简单的方法是开始 import scalaz._import Scalaz._ 但有时这可能会导致冲突.到目前为止,我一直在做的这个稍微痛苦的过程是: 制定一个最小的例子,需要与我的实际代码相同的导入 在单独的项目中复
我正在一个项目中使用 scalaz7,有时我遇到与导入有关的问题.最简单的方法是开始

import scalaz._
import Scalaz._

但有时这可能会导致冲突.到目前为止,我一直在做的这个稍微痛苦的过程是:

制定一个最小的例子,需要与我的实际代码相同的导入
>在单独的项目中复制该示例
>使用选项-Xprint:typer编译它,以了解代码如何看待隐式解析
>在原始项目中输入所需的含义.

虽然这样做,我想简化它.我看到scalaz7有更多细粒度的进口,但我不完全明白它们是如何组织的.例如,我看到可以做到

import scalaz.std.option._
import scalaz.std.AllInstances._
import scalaz.std.AllFunctions._
import scalaz.syntax.monad._
import scalaz.syntax.all._
import scalaz.syntax.std.boolean._
import scalaz.syntax.std.all._

等等.

How are these sub-imports organized?

例如,我想要使用验证.我需要什么,例如注入验证意图并进行以下编译?

3.fail[String]

如何进行验证NEL [A,B]应用实例?

解决方法

这个博客文章解释了包装结构,并详细介绍了scalaz7中的一个点菜: http://eed3si9n.com/learning-scalaz-day13

对于您的具体示例,对于3.failure [String],您需要:

import scalaz.syntax.validation._

验证已经有一个方法ap:

scala> "hello".successNel[Int] ap ((s: String) => "x"+s).successNel[Int]
res1: scalaz.Validation[scalaz.NonEmptyList[Int],java.lang.String] = Success(xhello)

要获得< *>运算符,你需要这个导入:

import scalaz.syntax.applicative._

那你可以做:

"hello".successNel[Int] <*> ((s: String) => "x"+s).successNel[Int]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读