问题标签 [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.
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]()
. 但是当我尝试这个时,我得到:
任何的想法?我可以在最后一段时间使用一些帮助 - 假设它是可能的。
scala - 在 Scala 中为嵌套类编写类型类实例
在这个最近的 Stack Overflow 问题中,作者想要将某种类型的解析器列表更改为返回该类型列表的解析器。我们可以想象用 Scalaz's sequence
for 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
。由于演员阵容,这有点作弊,但仍然很整洁。
scala - 可以使用 scalaz Arrow 组合吗?
我有两个功能。
我怎样才能组合这些,以便我有一个单一的功能(日期时间,发票,用户,参考)=>(行动,可迭代[计费])
这是我想要的穷人方式
scala - Scalaz库导入技术推理
你们有谁知道为什么 Scalaz 的示例总是使用这种导入技术:
而不是:
? 我试图了解偏好背后的原因是什么。
谢谢!
scala - 使用类型类时,如何以不同的方式处理对象?
假设我有一个类型类Graph[G,V]
,它声明一个类型的对象G
也是一个具有类型顶点的图V
。
现在我有一个隐含的方法,可以让我将类型对的集合A
视为具有类型顶点的图A
(无法表示未连接的顶点......)。我可以通过导入以下对象的范围来使用隐式。
假设我还希望能够映射顶点的内容,从而能够执行以下操作:
但是已经有一个map
定义了Set
。如何处理相同的数据结构可以map
以不同的方式被视为相同的东西(具有功能的东西)的问题?
scala - 如何编写具有上下文边界的一流函数,可以在使用现场干净地调用?
例如,假设我想编写一个length
返回给定结构长度的函数,假设它Length
在范围内有一个类型类(来自 Scalaz)的实例。
这就是我目前定义它的方式:
但是,诸如此类的调用length(List(2, 3))
失败,因为在这种情况下,隐式参数是所需的第一个参数。
我认为length(implicitly)(List(2, 3))
会起作用,但它最终导致会话崩溃(这是可以理解的,因为类型推断从左到右流动)。提供显式类型注释是可行的,但丑得难以忍受。
是否有一种编写一流函数的好方法,例如length
具有上下文绑定的,可以像在使用站点上的常规函数一样干净地调用?(喜欢length(List(2, 3))
)
scala - 使用应用函子对选项列表求和
我有一个 List[Option[Int]] 并想使用应用函子对其进行求和。从 [1] 我了解到它应该类似于以下内容
但是我根本无法弄清楚写这个的正确方法。如果有人可以帮助我,我会很高兴。
非常感谢
编辑
感谢所有伟大的答案。
如果列表中有任何无,我希望它返回无。我正在尝试用 Option/Either 替换 Null/Exception,看看是否可以生成一些可用的代码。
一些函数会填满我的列表,我想尽可能简单地进一步处理它,而不检查其中一个元素是否为无。它应该与异常类似,我不必在我的函数中检查它,而是让调用者处理它。
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._
不工作
任何想法?
scala - (scalaz) 可选地调用链式方法
我有:
是否有一些 scalaz 魔法可以消除重复?
我可以做类似的事情
但这似乎有点尴尬。我想我正在寻找类似的东西