首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Scalaz7中管理导入

在Scalaz7中管理导入
EN

Stack Overflow用户
提问于 2012-11-13 09:27:43
回答 1查看 1.2K关注 0票数 12

我在一个项目中使用scalaz7,有时我在导入方面遇到问题。最简单的开始方式是

代码语言:javascript
复制
import scalaz._
import Scalaz._

但有时这会导致冲突。到目前为止,我一直在做的事情有以下几个痛苦的过程:

  • 找出一个最小的示例,它需要与我的实际代码相同的导入
  • 将该示例复制到单独的项目中。
  • 使用选项-Xprint:typer编译它,以了解代码如何处理隐式解析。
  • 导入原始项目中所需的隐含项。

虽然这是可行的,但我想精简它。我看到scalaz7有更细粒度的导入,但我并不完全理解它们是如何组织的。例如,我看到一个人可以做到

代码语言:javascript
复制
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._

诸若此类。

这些子进口是如何组织的?

举个例子,假设我想处理验证问题。例如,我需要什么来注入验证并进行下面的编译?

代码语言:javascript
复制
3.fail[String]

如何使ValidationNEL[A, B]成为Applicative的一个实例?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-13 13:02:49

这篇博文详细解释了包结构,并详细地导入了scalaz7中的la点菜:http://eed3si9n.com/learning-scalaz-day13

对于具体的示例,对于3. 3.failureString,您需要:

代码语言:javascript
复制
import scalaz.syntax.validation._

验证已经有了一个方法ap

代码语言:javascript
复制
scala> "hello".successNel[Int] ap ((s: String) => "x"+s).successNel[Int]
res1: scalaz.Validation[scalaz.NonEmptyList[Int],java.lang.String] = Success(xhello)

要获得<*>操作符,您需要以下导入:

代码语言:javascript
复制
import scalaz.syntax.applicative._

然后你就可以:

代码语言:javascript
复制
"hello".successNel[Int] <*> ((s: String) => "x"+s).successNel[Int]
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13358213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档