问题标签 [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 投票
3 回答
1967 浏览

scala - Scala中方法的条件调用

我在我的代码中多次发现这种模式:

我想知道是否有一种语法上更令人愉悦的方式来编写上面的代码,尤其是避免object变量的重复。就像是:

不幸的是,上面的行失败了,因为类型推断需要一个参数类型(_.callAMethod)

我现在最好的方法是:

不是很好,因为我必须声明一个,implicit val但如果有几个链式调用,这会得到回报:

有没有人有更好的主意?我在这里错过了一些 Scalaz 魔法吗?

0 投票
1 回答
1936 浏览

scala - 帮助我理解这个 Scala 代码:scalaz IO Monad andimplicits

这是对这个问题的跟进。

这是我试图理解的代码(来自http://apocalisp.wordpress.com/2010/10/17/scalaz-tutorial-enumeration-based-io-with-iteratees/):

这段代码是这样使用的(我假设import io._是隐含的)

我现在正试图理解这个implicit val IOMonad定义。这是我的理解。这是一个scalaz.Monad,所以它需要定义purebind抽象scalaz.Monad特征的值。

pure获取一个值并将其转换为包含在“容器”类型中的值。例如,它可能需要一个Int并返回一个List[Int]。这看起来很简单。

bind接受一个“容器”类型和一个将容器持有的类型映射到另一种类型的函数。返回的值是相同的容器类型,但它现在拥有一个新类型。一个示例是使用将s 映射到s的函数将aList[Int]映射到 a 。和差不多吗?List[String]IntStringbindmap

的实施bind是我卡住的地方。这是代码:

这个定义接受IO[A]并将其映射到使用一个接受并返回一个IO[B]的函数。我想要做到这一点,它必须用来“压平”结果(对吗?)。AIO[B]flatMap

= IO { ... }是一样的

我认为?

implicitly方法查找实现的隐式值(值,对吗?)Monad[Function0]。这个隐含的定义从何而来?我猜这是来自implicit val IOMonad = new Monad[IO] {...}定义,但我们现在处于该定义之内,事情变得有点循环,我的大脑开始陷入无限循环:)

此外,bind( () => a.unsafePerformIO) 的第一个参数似乎是一个不带参数并返回 a.unsafePerformIO 的函数。我应该怎么读这个?bind将容器类型作为其第一个参数,所以可能() => a.unsafePerformIO解析为容器类型?

0 投票
1 回答
1063 浏览

scala - 我如何使用名称作为应用程序?

Name是一个Monad,因此Applicative也是一个。为什么这段代码不起作用?我是否需要添加任何类型注释才能使其工作?谢谢!

0 投票
1 回答
210 浏览

scala - 使用带有 scalaz 的视图边界

我通过将现有类转换为使用Monoid特征来首次涉足 scalaz。我想要实现的是在我的类类型参数上设置一个视图绑定,以确保它只能用于可以隐式转换为 Monoid 的类型。因此,我的(简化的)类定义是:

编译这个简单的例子会产生编译器错误:

以前,此视图绑定是针对我自己的自定义特征定义的,并通过从 T 到特征的隐式转换来定义,并且效果很好。

现在我已经将它转换为scalaz,我错过了什么?

谢谢,克里斯

0 投票
2 回答
1597 浏览

scala - Scalaz 验证失败的映射

这将返回一个Validation[NumberFormatException, Int]. 有没有办法我可以在失败端(例如toString)应用一个函数来获得一个Validation[String, Int]

0 投票
3 回答
386 浏览

scala - 字符串被视为 Monoid

给定一个像这样或那样的签名:

假设 A 是Char,有没有办法得到 aString而不是 a List[Char]

String不接受类型参数,所以我认为这是不可能的。下一个最佳选择是什么?现在,我mkString在结果上使用,但感觉不是最佳的。

我认为String是一个带有 ""附加 +的幺半群......

0 投票
1 回答
557 浏览

scala - Scalaz 的 traverse_ 与 IO monad

我想使用 IO 单子。

但是此代码不适用于大文件。我收到了 StackOverflowError。我尝试了该-DXss选项,但它引发了同样的错误。

我该怎么做?


我写了输出所有元素的Iteratee。

这也是同样的结果。

我认为是由 IO 实现引起的。

0 投票
3 回答
797 浏览

generics - 在 Scala 中,是否有减少泛型类型数量的简写?

我想调用 Scalaz 的pure方法将值放入 State monad。以下作品:

我还可以消除类型别名(感谢 Scalaz 的 Pure.scala):

但这非常笨拙。有没有更短的方法来合成这样的类型?就像函数文字的占位符语法一样,有没有类似的东西:

0 投票
3 回答
13733 浏览

scala - Scalaz 状态单子示例

我还没有看到很多scalaz state monad的例子。有这个例子,但很难理解,而且似乎只有另一个关于堆栈溢出的问题。

我将发布一些我玩过的例子,但我欢迎更多的例子。另外,如果有人可以提供有关为什么使用 , 和 的示例init,那就modify太好了。putgets

编辑:是关于状态单子的精彩 2 小时演示。

0 投票
8 回答
25896 浏览

scala - 按键合并地图

假设我有两张地图:

我想按键合并这些映射,应用一些函数来收集值(在这种特殊情况下,我想将它们收集到一个序列中,给出:

感觉应该有一个很好的,惯用的方式来做到这一点。