问题标签 [scalaz]

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 回答
1378 浏览

scala - scalaz List[StateT].sequence - 找不到参数 n 的隐式值:scalaz.Applicative

我试图根据对我的Scalaz 状态单子示例答案的评论来弄清楚如何使用StateT组合两个状态转换器。State

看来我已经很接近了,但是在尝试申请时遇到了问题sequence

所以我得到了一个StateT[StateMap, Random, Int]我可以用初始随机和空地图状态展开的:

现在我想生成一个列表StateT并使用sequence,以便我可以调用list.sequence ! new Random(1L) apply Map[Int,Int](). 但是当我尝试这个时,我得到:

任何的想法?我可以在最后一段时间使用一些帮助 - 假设它是可能的。

0 投票
2 回答
516 浏览

scala - 在 Scala 中为嵌套类编写类型类实例

这个最近的 Stack Overflow 问题中,作者想要将某种类型的解析器列表更改为返回该类型列表的解析器。我们可以想象用 Scalaz's sequencefor applicative functors 来做这件事:

在这里,我们获取一个包含三个返回整数列表的解析器的列表,并将其转换为一个返回整数列表的解析器。不幸的是,Scalaz 没有为 提供Applicative实例Parser,因此这段代码无法编译,但这很容易修复:

这可以按预期工作:例如,parser("1 2 3 4 5 6")给我们List(List(1), List(2, 3), List(4, 5, 6))

(我知道我可以只给出一个Apply实例,但Bind实例更简洁。)

每次我们都可以不必这样做 extend 会很好Parsers,但我不清楚如何更普遍地获取Applicative实例。Parsers#Parser以下幼稚的方法当然行不通,因为我们需要Parsers相同的实例:

我很清楚这应该是可能的,但我对 Scala 的类型系统不够熟悉,不知道如何去做。我缺少一些简单的东西吗?


回应以下答案:我确实尝试了这-Ydependent-method-types条路线,并走到了这一步:

问题(正如didierd指出的那样)是不清楚如何implicit启动。所以这种方法确实有效,但您必须在语法中添加以下内容:

在这一点上,mixin 方法显然更具吸引力。

(作为旁注:我希望能够简单地写Applicative.applicative[g.Parser]在上面,但这给出了一个错误,说编译器无法找到Pure[g.Parser]- 即使一个人坐在它旁边的隐含值。所以很明显有一些不同的东西隐含的方式适用于依赖方法类型。)


感谢retroonym指出了一个实现我想要的技巧。我从他的代码中提取了以下内容:

Parser如果你在范围内有这个,你会在任何扩展的对象中获得一个 monad 实例Parsers。由于演员阵容,这有点作弊,但仍然很整洁。

0 投票
1 回答
728 浏览

scala - 可以使用 scalaz Arrow 组合吗?

我有两个功能。

我怎样才能组合这些,以便我有一个单一的功能(日期时间,发票,用户,参考)=>(行动,可迭代[计费])

这是我想要的穷人方式

0 投票
2 回答
634 浏览

scala - Scalaz库导入技术推理

你们有谁知道为什么 Scalaz 的示例总是使用这种导入技术:

而不是:

? 我试图了解偏好背后的原因是什么。

谢谢!

0 投票
3 回答
201 浏览

scala - 使用类型类时,如何以不同的方式处理对象?

假设我有一个类型类Graph[G,V],它声明一个类型的对象G也是一个具有类型顶点的图V

现在我有一个隐含的方法,可以让我将类型对的集合A视为具有类型顶点的图A(无法表示未连接的顶点......)。我可以通过导入以下对象的范围来使用隐式。

假设我还希望能够映射顶点的内容,从而能够执行以下操作:

但是已经有一个map定义了Set。如何处理相同的数据结构可以map以不同的方式被视为相同的东西(具有功能的东西)的问题?

0 投票
1 回答
230 浏览

scala - 如何编写具有上下文边界的一流函数,可以在使用现场干净地调用?

例如,假设我想编写一个length返回给定结构长度的函数,假设它Length在范围内有一个类型类(来自 Scalaz)的实例。

这就是我目前定义它的方式:

但是,诸如此类的调用length(List(2, 3))失败,因为在这种情况下,隐式参数是所需的第一个参数。

我认为length(implicitly)(List(2, 3))会起作用,但它最终导致会话崩溃(这是可以理解的,因为类型推断从左到右流动)。提供显式类型注释是可行的,但丑得难以忍受。

是否有一种编写一流函数的好方法,例如length具有上下文绑定的,可以像在使用站点上的常规函数​​一样干净地调用?(喜欢length(List(2, 3))

0 投票
6 回答
2407 浏览

scala - 使用应用函子对选项列表求和

我有一个 List[Option[Int]] 并想使用应用函子对其进行求和。从 [1] 我了解到它应该类似于以下内容

但是我根本无法弄清楚写这个的正确方法。如果有人可以帮助我,我会很高兴。

非常感谢

[1]如何在 Scala 中组合 Option 值?

编辑

感谢所有伟大的答案。

如果列表中有任何无,我希望它返回无。我正在尝试用 Option/Either 替换 Null/Exception,看看是否可以生成一些可用的代码。

一些函数会填满我的列表,我想尽可能简单地进一步处理它,而不检查其中一个元素是否为无。它应该与异常类似,我不必在我的函数中检查它,而是让调用者处理它。

0 投票
2 回答
924 浏览

scala - 创建和使用没有 sbt 的独立 scalaz jar

我已经从存储库(版本 6.0.4)下载了 scalaz 快照。
我想创建独立的 jar 文件并将其放入我的 scala lib 目录中,以便在没有 sbt 的情况下使用 scalaz。

我有来自 scala-lang.org 的 scala 包,并存储在 /opt/scala
到目前为止我所做的:

  • 转到未去皮重的 scalaz 目录
  • 从 scalaz 项目运行 sbt
  • 编译scalaz项目
  • 制作一个包(通过包命令)
  • sbt 制作一个完整的 jar/target/scala-2.9.1/scalaz-full_2.9.1-6.0.4-SNAPSHOT.jar
  • 它还产生其他jar:full/lib/sxr_2.9.0-0.2.7.jar
  • 我把两个罐子都移到了 /opt/scala/lib

在此之后,我尝试了 scala repl,但我无法导入 scalaz。我尝试导入scalaz._, Scalaz._, org.scalaz._scalaz-core._ 但不起作用。键入后 REPL 代码完成import scalaz提示:scalaz_2.9.1-6.0.4-SNAPSHOT.
import scalaz_2.9.1-6.0.4-SNAPSHOT._不工作

任何想法?

0 投票
1 回答
291 浏览

scala - 泛型中奇怪的嵌套结构类型

有人可以解释嵌套在泛型中的结构类型的奇怪构造:

这个例子来自 Scalaz 库:Functor.scala

为什么那里需要这种结构?写起来不会更简单:

或者

0 投票
1 回答
167 浏览

scala - (scalaz) 可选地调用链式方法

我有:

是否有一些 scalaz 魔法可以消除重复?

我可以做类似的事情

但这似乎有点尴尬。我想我正在寻找类似的东西