问题标签 [scalaz7]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
270 浏览

scala - Scala中的iso宏

如果我想隐式地将两个对象从一个对象转换为另一个对象,是否可以使用 Iso 宏之类的东西来做到这一点?

例如,如果我有这个:

我想简单地写:

注意:如下所述,我计划在我的 Web 框架中使用它,将我的数据库模型转换为中间件/前端模型。

0 投票
2 回答
1594 浏览

specs2 - 如何使用 playframework 2.3 和 specs2 2.4 而不是 specs2 2.3.x

最近,specs2更新到了 2.4 版本,现在使用的是 scalaz 7.1 而不是7.0.x。一旦我在我的游戏中更新了我的 specs2 依赖项!2.3 项目使用 2.4 版本,所有测试都失败,但有以下异常:

以前似乎没有人遇到过这个错误。至少我无法在 specs2 和 play 项目的问题跟踪系统中找到它。

0 投票
1 回答
1413 浏览

scala - |+| 是一个半群,为什么它需要一个幺半群隐式解析

Semigroup 的目标是确保关联性和闭合性 monoid 的目标是基于 Semigroup 并提供额外的 Identity。当我使用 |+| semigroup appender,为什么我定义隐式幺半群而不是隐式半群

这是我正在使用 reduceLeft 的代码,它不需要初始值

如果 staffListSemigroup 为 Semigroup[List[Staff]],则编译错误为 value |+| 不是 List[SemigroupSpec.this.Staff] 的成员

另外,|+| 的定义 在半群内

提前谢谢了

编辑

其次是@Travis 的回答,我认为这是不正确的。对于隐式值,特定值将始终覆盖通用值。这是我刚刚写的一个代码示例:

那是因为在 Scalaz 中,没有指定像 Foo 这样的方法中指定的类型。

0 投票
1 回答
818 浏览

scalaz - What happened to the Scalaz http module?

I am currenlty reading the book Scala in Action and while reading I'm trying to do the programming exercises. However, I'm stuck now on chapter 6.3 where I have to use Scalaz.

The thing is, the http module of Scalaz 6.0.3 is used. In this chapter I should only be able to do a GET request and later the idea is to build upon the project and make it a little more complex.

The problem I'm facing is that, I'm using Scala 2.11.2, so when I try to use Scalaz 6.0.3, the dependency can not be found. I guess that is because 6.0.3 doesn't support Scala 2.11.2. So, I wish to use Scaalaz 7.0.1. However, the HTTP module doesn't exist in 7.0.1, so I can't even compile my project because I have statements like: import scalaz.http._.

Furthermore, in the code, some values like Request object, and Response object are not found because in the example code, as far as I see, they are imported from scalaz.http._.

So, basically, what I'm asking is, can anyone direct me to some kind of tutorial? Or at least direct me to a changelog where I can see where the objects are now located?

Thank you!

0 投票
1 回答
215 浏览

scala - 使用Scalaz Futures和定时功能时如何正确退出程序

这按预期工作:

这不会:

在第一种情况下,应用程序正常退出,而在第二种情况下则不会。但是,两个版本都正确打印出结果值。

这是一个错误还是我不理解的东西?

0 投票
1 回答
146 浏览

scala - 为什么scalaz Semigroup不是协变的?

Scalaz SemiGroup 不是协变的原因很简单:

https://github.com/scalaz/scalaz/blob/series/7.1.x/core/src/main/scala/scalaz/Semigroup.scala

https://github.com/scalaz/scalaz/blob/series/7.1.x/core/src/main/scala/scalaz/syntax/SemigroupSyntax.scala

谢谢。

0 投票
1 回答
873 浏览

scala - Scalaz 未装箱的标记类型不会自动取消装箱

阅读http://eed3si9n.com/learning-scalaz/Tagged+type.html并尝试示例代码:

根据指南,应该 yield40.0但是,在 Scala 2.11.2 上我得到:

然而

工作得很好。

这是 2.10 vs 2.11 的事情还是我错过了什么?如果我不能像这样(不再)使用它们并且不得不求助于显式强制转换,那么取消装箱的标记类型有什么意义呢?

0 投票
2 回答
95 浏览

scala - 为什么 getOrElse 会在 scalaz 中丢失类型推断

当我在 Scalaz 中使用 Either 类型时,这是一个非常好的设计,但方法 getOrElse 会丢失类型推断。

为什么 val 要么 = 3.right[String] | “123”不是指 Int,而是 Any 发生。

这是一个缺陷还是设计的一部分?

提前谢谢了

0 投票
1 回答
657 浏览

scala - 在 scalaz.Validation 的 HList 上映射和减少/折叠

我从这样的事情开始:

现在我认为最好减少样板文件以获得更好的可读性,并且不必向更多初级团队成员解释什么.toValidateNel|@|含义。第一个想法是,List但最后一行将停止工作,我不得不放弃一些静态安全。于是我看向Shapeless:

但是,我什至似乎无法克服这.map(...)一点。我已经按照#scalaz的建议进行了尝试:

……无济于事。

我已经在#scalaz 上寻求帮助,但人们似乎没有开箱即用的答案。但是,我真的很想学习如何解决这个问题,既实用又学习。

PS 实际上,我的验证被包装在里面Kleisli[Va, A, B],这样我就可以使用它来组成单独的验证步骤,>=>但这似乎与问题正交,因为到那时.map(...),所有Kleislis 都将被“减少”到Validation[String, A].

0 投票
2 回答
553 浏览

scala - 包含一些 F[_] 的元组/hlist 上的通用变换/折叠/映射

我最近询问了 map 和 reduce/fold over scalaz.Validation 的 HList并得到了一个很好的答案,关于如何将固定大小的元组Va[T](它是 的别名scalaz.Validation[String, T])转换为scalaz.ValidationNel[String, T]. 从那时起,我一直在研究 Shapeless 和类型级编程,以尝试提出一种适用于任何大小的元组的解决方案。

这就是我要开始的:

那么validate我这样称呼的助手是:

我开始使用 anyProduct而不是一对并将其内容限制为Va[T]

我确实有这样的感觉,简单地添加约束只能确保输入有效,但对实现函数体没有任何帮助,但我不知道如何去纠正它。

traverse然后开始抱怨缺少证据,所以我最终得到:

然而,编译器继续抱怨缺少Traverser[HList, toValidationNel.type]隐式参数,即使它在那里。

traverse为了编译调用,我需要向编译器提供哪些额外的证据?它是否与UnaryTCConstraint未以对调用有用的方式声明有关traverse,即它不能适用toValidationNelparams因为它不能证明params包含 only Va[_]

PS我还找到了泛型类型的leftReduce Shapeless HList,并尝试使用foldRight而不是traverse无济于事;在尝试诊断编译器真正缺乏哪些证据时,错误消息并没有太大帮助。

更新:

根据 lmm 所指出的,我已经删除了演员表HList,但是,现在的问题是,虽然在非通用解决方案中我可以调用调用.map(_.tupled).map(block.toProduct)的结果,traverse但我现在得到:

值图不是 shapeless.contrib.scalaz.Out 的成员

为什么它可能是traverse(params.productElements)(toValidationNel)调用结果而不是通用遍历?

更新 2:

更改该Traverser[...]位以Traverser.Aux[..., Va[L]]帮助编译器确定遍历的预期结果类型,但这只会使validateGen函数编译成功,但会在调用站点产生另一个错误:

我也觉得这UnaryTCConstraint是完全没有必要的——但我对 Shapeless 还是太陌生了,不知道是不是这样。

更新 3:

意识到从遍历器中出来的类型不可能是Va[L]因为L它本身已经是 的 hlist Va[_],所以我将L类型参数拆分为Inand Out

这编译得很好——我很想知道以前的版本是如何Va[L]作为返回值(即第三个参数Traverser.Aux)编译的——但是,在调用站点,我现在得到:

未指定值参数 tr, fn